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 相关文章推荐
Extended CHM PHP 语法手册之 DIY
Oct 09 PHP
dede3.1分页文字采集过滤规则详说(图文教程)续四
Apr 03 PHP
php cli 方式 在crotab中运行解决
Feb 08 PHP
fleaphp常用方法分页之Pager使用方法
Apr 23 PHP
PHP与C#分别格式化文件大小的代码
May 14 PHP
解析php中die(),exit(),return的区别
Jun 20 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
Jul 04 PHP
Zend Framework教程之Zend_Config_Ini用法分析
Mar 23 PHP
Zend Framework入门教程之Zend_View组件用法示例
Dec 09 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
May 02 PHP
PHP 中TP5 Request 请求对象的实例详解
Jul 31 PHP
七种PHP开发环境搭建工具
Jun 28 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/09/05 PHP
php数组总结篇(一)
2008/09/30 PHP
php curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
2011/04/07 PHP
php获取服务器信息的实现代码
2013/02/04 PHP
php删除左端与右端空格的方法
2014/11/29 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
js注意img图片的onerror事件的分析
2011/01/01 Javascript
仿猪八戒网左下角的文字滚动效果
2011/10/28 Javascript
js读写(删除)Cookie实例详解
2013/04/17 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
2015/02/16 Javascript
JavaScript获取页面中第一个锚定文本的方法
2015/04/03 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
2015/11/05 Javascript
详解Node.js:events事件模块
2016/11/24 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
2016/12/23 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
2017/04/13 Javascript
利用JS对iframe父子(内外)页面进行操作的方法教程
2017/06/15 Javascript
JS实现的base64加密解密操作示例
2018/04/18 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
ES10的13个新特性示例(小结)
2019/09/23 Javascript
javascript局部自定义鼠标右键菜单
2020/12/08 Javascript
Python使用metaclass实现Singleton模式的方法
2015/05/05 Python
Python生成密码库功能示例
2017/05/23 Python
基于python中的TCP及UDP(详解)
2017/11/06 Python
Python并发:多线程与多进程的详解
2019/01/24 Python
利用python计算时间差(返回天数)
2019/09/07 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
2020/02/15 Python
简单了解Python字典copy与赋值的区别
2020/09/16 Python
巴西最大的家具及装饰用品店:Mobly
2017/10/11 全球购物
工作自我评价分享
2013/12/01 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
我的大学四年规划书范文2014
2014/09/26 职场文书
中秋节随笔
2015/08/15 职场文书
2016年中秋节晚会领导致辞
2015/11/26 职场文书
诺贝尔奖获得者名言100句:句句启人心智,值永久收藏
2019/08/09 职场文书
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript
Redis之RedisTemplate配置方式(序列和反序列化)
2022/03/13 Redis