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 相关文章推荐
4.与数据库的连接
Oct 09 PHP
第4章 数据处理-php数组的处理-郑阿奇
Jul 04 PHP
PHP中几种常见的超时处理全面总结
Sep 11 PHP
php ci框架验证码实例分析
Jun 26 PHP
php实现批量下载百度云盘文件例子分享
Apr 10 PHP
不使用php api函数实现数组的交换排序示例
Apr 13 PHP
php抓取网站图片并保存的实现方法
Oct 29 PHP
php生成gif动画的方法
Nov 05 PHP
PHP类的声明与实例化及构造方法与析构方法详解
Jan 26 PHP
PHP经典实用正则表达式小结
May 04 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 PHP
php实现微信公众平台发红包功能
Jun 14 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 文件上传全攻略
2010/04/28 PHP
二进制交叉权限微型php类分享
2014/02/07 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
2016/05/27 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
dotopAlert 提示用户需安装播放器的代码
2012/09/17 Javascript
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
jquery map方法使用示例
2014/04/23 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
2015/10/21 Javascript
详解jQuery中的DOM操作
2016/12/23 Javascript
js实现华丽的九九乘法表效果
2017/03/29 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
2018/08/08 Javascript
JavaScript基础之静态方法和实例方法分析
2018/12/26 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
layer ui 导入文件之前传入数据的实例
2019/09/23 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
jquery轮播图插件使用方法详解
2020/07/31 jQuery
[42:11]TNC vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python实现封装得到virustotal扫描结果
2014/10/05 Python
python计算方程式根的方法
2015/05/07 Python
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
2015/07/27 Python
python之django母板页面的使用
2018/07/03 Python
Pytorch转onnx、torchscript方式
2020/05/25 Python
手机配件第一品牌:ZAGG
2017/05/28 全球购物
西班牙手机之家:Phone House
2018/10/18 全球购物
西雅图的买手店:Totokaelo
2019/10/19 全球购物
中专自荐信
2013/10/13 职场文书
公司年会晚宴演讲稿
2014/01/06 职场文书
教学实习自我评价
2014/01/28 职场文书
应届本科毕业生求职信
2014/07/23 职场文书
法定代表人授权委托书范本
2014/10/07 职场文书
信息技术远程培训心得体会
2016/01/09 职场文书
python-for x in range的用法(注意要点、细节)
2021/05/10 Python
MySQL派生表联表查询实战过程
2022/03/20 MySQL
Apache Hudi数据布局黑科技降低一半查询时间
2022/03/31 Servers
SpringCloud Function SpEL注入漏洞分析及环境搭建
2022/04/08 Java/Android