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简单静态页生成过程
Mar 27 PHP
PHP 文件上传源码分析(RFC1867)
Oct 30 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
Sep 16 PHP
PHP使用数组依次替换字符串中匹配项
Jan 08 PHP
PHP浮点数的一个常见问题
Mar 10 PHP
php反射类ReflectionClass用法分析
May 12 PHP
PHP 芝麻信用接入的注意事项
Dec 01 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
Feb 18 PHP
PHP中的日期时间处理利器实例(Carbon)
Jun 09 PHP
php下载远程大文件(获取远程文件大小)的实例
Jun 17 PHP
Laravel学习教程之View模块详解
Sep 18 PHP
Laravel框架实现利用监听器进行sql语句记录功能
Jun 06 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
一个很方便的 XML 类!!原创的噢
2006/10/09 PHP
PHP 读取文件的正确方法
2009/04/29 PHP
php生成静态页面的简单示例
2014/04/17 PHP
PHP判断IP并转跳到相应城市分站的方法
2015/03/25 PHP
php发送邮件的问题详解
2015/06/22 PHP
php数组比较实现查找连续数的方法
2015/07/29 PHP
php设计模式之委托模式
2016/02/13 PHP
setTimeout与setInterval在不同浏览器下的差异
2010/01/24 Javascript
使用JavaScript 实现的人脸检测
2015/03/24 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
2016/10/26 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
2016/12/27 Javascript
js 判断数据类型的几种方法
2017/01/13 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
自定义vue组件发布到npm的方法
2018/05/09 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
2019/09/05 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
使用python将请求的requests headers参数格式化方法
2019/01/02 Python
python 随机森林算法及其优化详解
2019/07/11 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
执行Python程序时模块报错问题
2020/03/26 Python
Python如何定义有默认参数的函数
2020/08/10 Python
python 调整图片亮度的示例
2020/12/03 Python
HTML5中5个简单实用的API
2014/04/28 HTML / CSS
欧洲最大的笔和书写专家:The Pen Shop
2017/03/19 全球购物
美国家居装饰网上商店:Lulu & Georgia
2019/09/14 全球购物
简述你对Statement,PreparedStatement,CallableStatement的理解
2013/03/25 面试题
记者岗位职责
2014/01/06 职场文书
四好少年事迹材料
2014/01/12 职场文书
抗洪抢险事迹材料
2014/05/06 职场文书
员工薪酬激励方案
2014/06/13 职场文书
学校个人对照检查材料
2014/08/26 职场文书
2014年统计工作总结
2014/11/21 职场文书
使用redis生成唯一编号及原理示例详解
2021/09/15 Redis
服务器SVN搭建图文安装过程
2022/06/21 Servers