Laravel Eloquent ORM 多条件查询的例子
一、需求:
在数据搜索时最常见的就是调用同一个方法查询,而查询的字段却可能是其中一个或其中的几个字段一起组合查询,例如:对列表的搜索,基本上都是几个字段随意组合搜索。那么在model里就需要判断有那个字段组合,怎么组合。
网上找了很久,Laravel群里也问了几个,都说没有写过,于是自己写个吧。话不多说,见代码:
functionfindByParam($param=array()) { $select=newCustomer(); 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.nameasmname', 'member.discount' )); returnjson_encode($customers);
调用的时候,controller里只需要接收这些字段,无论它是否有值,直接加入到$param数组中查询就OK,例如:
functionanyFindbyparam() { $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=newCustomer(); $customers=$customer->findByParam(array( 'name'=>$name, 'tel'=>$tel, 'phone'=>$phone, 'email'=>$email, 'qq'=>$qq, 'IDCard'=>$IDCard )); return$customers; }
以上这篇LaravelEloquentORM多条件查询的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。