Laravel Eloquent ORM 多条件查询的例子


Posted in PHP onOctober 10, 2019

一、需求:

在数据搜索时最常见的就是调用同一个方法查询,而查询的字段却可能是其中一个或其中的几个字段一起组合查询,例如:对列表的搜索,基本上都是几个字段随意组合搜索。那么在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 多条件查询的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP详细彻底学习Smarty
Mar 27 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
Jun 06 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
Jul 02 PHP
用PHP提取中英文词语以及数字的首字母的方法介绍
Apr 23 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
Jun 24 PHP
php检测apache mod_rewrite模块是否安装的方法
Mar 14 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
Sep 25 PHP
php+ajax实现无刷新的新闻留言系统
Dec 21 PHP
PHP实现对二维数组某个键排序的方法
Sep 14 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
Sep 22 PHP
PHP实现防止表单重复提交功能【基于token验证】
May 24 PHP
Laravel框架中集成MongoDB和使用详解
Oct 17 PHP
laravel withCount 统计关联数量的方法
Oct 10 #PHP
浅谈laravel中的关联查询with的问题
Oct 10 #PHP
thinkphp框架使用JWTtoken的方法详解
Oct 10 #PHP
Laravel 对某一列进行筛选然后求和sum()的例子
Oct 10 #PHP
asp.net和php的区别点总结
Oct 10 #PHP
解决laravel groupBy 对查询结果进行分组出现的问题
Oct 09 #PHP
PHP之多条件混合筛选功能的实现方法
Oct 09 #PHP
You might like
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
2014/03/25 PHP
PHP CURL获取返回值的方法
2014/05/04 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
2019/03/01 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
超级强大的表单验证
2006/06/26 Javascript
表单(FORM)的一些实用效果代码
2007/03/25 Javascript
JAVASCRIPT keycode总结
2009/02/04 Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
js 将json字符串转换为json对象的方法解析
2013/11/13 Javascript
javascript事件绑定学习要点
2016/03/09 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
JavaScript原生数组Array常用方法
2017/04/06 Javascript
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
Angular 组件之间的交互的示例代码
2018/03/24 Javascript
微信小程序Getuserinfo解决方案图解
2018/08/24 Javascript
vue设置一开始进入的页面教程
2019/10/28 Javascript
微信小程序缓存支持二次开发封装实现解析
2019/12/16 Javascript
浅析vue-router实现原理及两种模式
2020/02/11 Javascript
python将文本转换成图片输出的方法
2015/04/28 Python
在windows下Python打印彩色字体的方法
2018/05/15 Python
解决python3中cv2读取中文路径的问题
2018/12/05 Python
Python 多线程不加锁分块读取文件的方法
2018/12/11 Python
Django框架基础模板标签与filter使用方法详解
2019/07/23 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
HTML5 拖放(Drag 和 Drop)详解与实例代码
2017/09/14 HTML / CSS
HTML5去掉输入框type为number时的上下箭头的实现方法
2020/01/03 HTML / CSS
英国奢侈品牌时尚购物平台:Farfetch(支持中文)
2020/02/18 全球购物
远程教育心得体会
2014/01/03 职场文书
大专生自我评价
2014/01/28 职场文书
通用员工手册范本
2015/05/14 职场文书
教师节领导致辞
2015/07/29 职场文书
小学秋季运动会加油口号及加油稿
2019/08/19 职场文书
2019年销售部季度工作计划3篇
2019/10/09 职场文书
ant design charts 获取后端接口数据展示
2022/05/25 Javascript
vue实现登陆页面开发实践
2022/05/30 Vue.js