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 移除数组重复元素的一点说明
Nov 27 PHP
Yii使用CLinkPager分页实例详解
Jul 23 PHP
PHP基于数组实现的分页函数实例
Aug 20 PHP
php中try catch捕获异常实例详解
Nov 21 PHP
php+mysqli使用预处理技术进行数据库查询的方法
Jan 28 PHP
php强制更新图片缓存的方法
Feb 11 PHP
PHP获取Exif缩略图的方法
Jul 13 PHP
Symfony2中被遗弃的getRequest()方法分析
Mar 17 PHP
PHP常见数组函数用法小结
Mar 21 PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
PHP判断是否是微信打开还是浏览器打开的方法
Feb 27 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动态变静态原理
2006/11/25 PHP
关于IIS php调用com组件的权限问题
2012/01/11 PHP
ThinkPHP写第一个模块应用
2012/02/20 PHP
php切割页面div内容的实现代码分享
2012/07/31 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
2019/02/25 PHP
JavaScript 开发中规范性的一点感想
2009/06/23 Javascript
Javascript 面试题随笔
2011/03/31 Javascript
javascript中call和apply的用法示例分析
2015/04/02 Javascript
你不需要jQuery(三) 新AJAX方法fetch()
2016/06/14 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
JS获取鼠标选中的文字
2016/08/10 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
2016/08/29 Javascript
js实现的简练高效拖拽功能示例
2016/12/21 Javascript
js时间戳和c#时间戳互转方法(推荐)
2017/02/15 Javascript
详解vue-cli 脚手架项目-package.json
2017/07/04 Javascript
JavaScript获取tr td 的三种方式全面总结(推荐)
2017/08/15 Javascript
微信小程序实现上传图片功能
2018/05/28 Javascript
深入Node TCP模块的理解
2019/03/13 Javascript
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
Python-嵌套列表list的全面解析
2016/06/08 Python
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
python画图的函数用法以及技巧
2019/06/28 Python
Python list与NumPy array 区分详解
2019/11/06 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
2020/06/03 Python
CSS3哪些新特性值得称赞
2016/03/02 HTML / CSS
HTML5教程之html 5 本地数据库(Web Sql Database)
2014/04/03 HTML / CSS
Html5实现移动端、PC端 刮刮卡效果
2016/06/30 HTML / CSS
捷克电器和DJ设备网上商店:Electronic-star
2017/07/18 全球购物
世界上最好的足球商店:Unisport
2019/03/02 全球购物
攀岩、滑雪、徒步旅行装备:Black Diamond Equipment
2019/08/16 全球购物
Linux开机引导的步骤是什么
2015/10/19 面试题
《小猫刮胡子》教学反思
2014/02/21 职场文书
《称象》教学反思
2014/04/25 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
财务总监岗位职责
2015/02/03 职场文书
小学生手册家长意见
2015/06/03 职场文书