php教程

超轻量级php框架startmvc

Laravel Eloquent ORM 多条件查询的例子

更新时间:2020-04-10 02:10:44 作者:startmvc
一、需求:在数据搜索时最常见的就是调用同一个方法查询,而查询的字段却可能是其中一

一、需求:

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

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


function findByParam($param = array()) 
 { 
 $select = new Customer(); 
 if (isset($param['name']) && '' != $param['name']) 
 { 
 $select = $select->where('customer.name', '=', $param['name']); 
 } 
 if (isset($param['phone']) && '' != $param['phone']) 
 { 
 $select = $select->where('customer.phone', '=', $param['phone']); 
 } 
 if (isset($param['email']) && '' != $param['email']) 
 { 
 $select = $select->where('customer.email', '=', $param['email']); 
 } 
 if (isset($param['tel']) && '' != $param['tel']) 
 { 
 $select = $select->where('customer.tel', '=', $param['tel']); 
 } 
 if (isset($param['qq']) && '' != $param['qq']) 
 { 
 $select = $select->where('customer.qq', '=', $param['qq']); 
 } 
 if (isset($param['IDCard']) && '' != $param['IDCard']) 
 { 
 $select = $select->where('customer.IDCard', '=', $param['IDCard']); 
 } 
 
 $customers = $select->leftJoin("member", function ($join) 
 { 
 $join->on("customer.memberID", "=", "member.id"); 
 }) 
 ->get(array( 
 'customer.id', 
 'customer.name', 
 'customer.sex', 
 'customer.tel', 
 'customer.phone', 
 'customer.address', 
 'customer.email', 
 'customer.qq', 
 'customer.headPic', 
 'customer.birthday', 
 'customer.IDCard', 
 'customer.enable', 
 'customer.memberID', 
 'customer.IDCard', 
 'customer.info', 
 'member.name as mname', 
 'member.discount' 
 )); 
 return json_encode($customers); 

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


function anyFindbyparam() 
 { 
 $name = Input::get('name'); 
 $tel = Input::get('tel'); 
 $phone = Input::get('phone'); 
 $email = Input::get('email'); 
 $qq = Input::get('qq'); 
 $IDCard = Input::get('IDCard'); 
 $customer = new Customer(); 
 $customers = $customer->findByParam(array( 
 'name' => $name, 
 'tel' => $tel, 
 'phone' => $phone, 
 'email' => $email, 
 'qq' => $qq, 
 'IDCard' => $IDCard 
 )); 
 return $customers; 
 } 

以上这篇Laravel Eloquent ORM 多条件查询的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

Laravel Eloquent ORM 多条件 查询