当前位置:首页 > CMS教程 > 其它CMS > 列表

Laravel Eloquent ORM 多条件查询的例子

发布:smiling 来源: PHP粉丝网  添加日期:2021-12-28 20:36:36 浏览: 评论:0 

今天小编就为大家分享一篇Laravel Eloquent ORM 多条件查询的例子,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧。

一、需求:

在数据搜索时最常见的就是调用同一个方法查询,而查询的字段却可能是其中一个或其中的几个字段一起组合查询,例如:对列表的搜索,基本上都是几个字段随意组合搜索,那么在model里就需要判断有那个字段组合,怎么组合。

网上找了很久,Laravel群里也问了几个,都说没有写过,于是自己写个吧。话不多说,见代码:

  1. function findByParam($param = array())  
  2.  {  
  3.   $select = new Customer();  
  4.   if (isset($param['name']) && '' != $param['name'])  
  5.   {  
  6.    $select = $select->where('customer.name''='$param['name']);  
  7.   }  
  8.   if (isset($param['phone']) && '' != $param['phone'])  
  9.   {  
  10.    $select = $select->where('customer.phone''='$param['phone']);  
  11.   }  
  12.   if (isset($param['email']) && '' != $param['email'])  
  13.   {  
  14.    $select = $select->where('customer.email''='$param['email']);  
  15.   }  
  16.   if (isset($param['tel']) && '' != $param['tel'])  
  17.   {  
  18.    $select = $select->where('customer.tel''='$param['tel']);  
  19.   }  
  20.   if (isset($param['qq']) && '' != $param['qq'])  
  21.   {  
  22.    $select = $select->where('customer.qq''='$param['qq']);  
  23.   }  
  24.   if (isset($param['IDCard']) && '' != $param['IDCard'])  
  25.   {  
  26.    $select = $select->where('customer.IDCard''='$param['IDCard']);  
  27.   }  
  28.      
  29.   $customers = $select->leftJoin("member"function ($join)  
  30.   {  
  31.    $join->on("customer.memberID""=""member.id");  
  32.   })  
  33.    ->get(array(  
  34.    'customer.id',  
  35.    'customer.name',  
  36.    'customer.sex',  
  37.    'customer.tel',  
  38.    'customer.phone',  
  39.    'customer.address',  
  40.    'customer.email',  
  41.    'customer.qq',  
  42.    'customer.headPic',  
  43.    'customer.birthday',  
  44.    'customer.IDCard',  
  45.    'customer.enable',  
  46.    'customer.memberID',  
  47.    'customer.IDCard',  
  48.    'customer.info',  
  49.    'member.name as mname',  
  50.    'member.discount' 
  51.   ));  
  52.   return json_encode($customers); 

调用的时候,controller里只需要接收这些字段,无论它是否有值,直接加入到$param数组中查询就OK,例如:

  1. function anyFindbyparam()  
  2.  {  
  3.   $name = Input::get('name');  
  4.   $tel = Input::get('tel');  
  5.   $phone = Input::get('phone');  
  6.   $email = Input::get('email');  
  7.   $qq = Input::get('qq');  
  8.   $IDCard = Input::get('IDCard');  
  9.   $customer = new Customer();  
  10.   $customers = $customer->findByParam(array(  
  11.    'name' => $name,  
  12.    'tel' => $tel,  
  13.    'phone' => $phone,  
  14.    'email' => $email,  
  15.    'qq' => $qq,  
  16.    'IDCard' => $IDCard 
  17.   ));  
  18.   return $customers;  
  19.  }

Tags: Laravel Eloquent ORM

分享到: