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 相关文章推荐
WINDOWS服务器安装多套PHP的另类解决方案
Oct 09 PHP
ip签名探针
Oct 09 PHP
PHPMyadmin 配置文件详解(配置)
Dec 03 PHP
生成ubuntu自动切换壁纸xml文件的php代码
Jul 17 PHP
PHP 数据结构 算法 三元组 Triplet
Jul 02 PHP
php保存信息到当前Session的方法
Mar 16 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
Jan 09 PHP
php生成带logo二维码方法小结
Apr 08 PHP
php 如何设置一个严格控制过期时间的session
May 05 PHP
PHP截取发动短信内容的方法
Jul 04 PHP
PHP图片水印类的封装
Jul 06 PHP
PHP实现的AES加密、解密封装类与用法示例
Aug 02 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
火车头采集器3.0采集图文教程
2007/03/17 PHP
php实现httpclient类示例
2014/04/08 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
PHP遍历数组的方法汇总
2015/04/30 PHP
Yii中表单用法实例详解
2016/01/05 PHP
PHP实现长文章分页实例代码(附源码)
2016/02/03 PHP
如何利用预加载优化Laravel Model查询详解
2017/08/11 PHP
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
2009/10/24 Javascript
javascript之typeof、instanceof操作符使用探讨
2013/05/19 Javascript
Javascript中Date类型和Math类型详解
2016/02/27 Javascript
JS与jQuery实现隔行变色的方法
2016/09/09 Javascript
详解Sea.js中Module.exports和exports的区别
2017/02/12 Javascript
详解JS中遍历语法的比较
2017/04/07 Javascript
JavaScript之Map和Set_动力节点Java学院整理
2017/06/29 Javascript
vue深入解析之render function code详解
2017/07/18 Javascript
微信小程序用户自定义模版用法实例分析
2017/11/28 Javascript
Javascript 编码约定(编码规范)
2018/03/11 Javascript
微信小程序input框中加入小图标的实现方法
2018/06/19 Javascript
JavaScript原型链与继承操作实例总结
2018/08/24 Javascript
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
过滤器vue.filters的使用方法实现
2019/09/18 Javascript
你不可不知的Vue.js列表渲染详解
2019/10/01 Javascript
antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作
2020/08/06 Javascript
JavaScript实现移动端拖动元素
2020/11/24 Javascript
手把手教你如何编译打包video.js
2020/12/09 Javascript
Django 表单模型选择框如何使用分组
2019/05/16 Python
python实现双人五子棋(终端版)
2020/12/30 Python
python基于opencv实现人脸识别
2021/01/04 Python
逻辑链路控制协议
2016/10/01 面试题
校长先进事迹材料
2014/02/01 职场文书
飞机制造技术专业求职信
2014/07/27 职场文书
物理课外活动总结
2014/08/27 职场文书
2014财务年度工作总结
2014/11/11 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
Python面向对象编程之类的概念
2021/11/01 Python
vue使用echarts实现折线图
2022/03/21 Vue.js