laravel 框架结合关联查询 when()用法分析


Posted in PHP onNovember 22, 2019

本文实例讲述了laravel 框架结合关联查询 when()用法。分享给大家供大家参考,具体如下:

Laravel 5.6 里面的when用法:

$name = $request->get('name');               //活动标题
$start_time = $request->get('start_time');         //活动开始时间
$user_name = $request->get('user_name');          //发布者
$limit = (int) $request->get('limit', 15);
$offset = (int) $request->get('offset', 0);
$data=ActiveJieSuan::with(['user' => function ($query) {$query->select('id','name');},
  'active'=> function ($query) {$query->select('id','name','start');}])
  ->when($name, function ($query) use ($name) {
   return $query->whereHas('active', function ($query) use ($name) {
     return $query->where('name', 'like', '%'.$name.'%');
   });
  })
  ->when($user_name, function ($query) use ($user_name) {
   return $query->whereHas('user', function ($query) use ($user_name) {
     return $query->where('name', 'like', '%'.$user_name.'%');
   });
  })
  ->when($start_time, function ($query) use ($start_time) {
   return $query->whereHas('active', function ($query) use ($start_time) {
     return $query->where('start', '>=', $start_time);
   });
  })
  ->limit($limit)
  ->offset($offset)
  ->orderBy('id', 'desc')
  ->paginate()->toArray();

源代码路径: D:\phpStudy\WWW\faceke\vendor\laravel\framework\src\Illuminate\Database\Concerns\BuildsQueries.php

public function when($value, $callback, $default = null)
{ 
  if ($value) { return $callback($this, $value) ?: $this; 
  } elseif ($default) {
  return $default($this, $value) ?: $this; 
  } return $this; 
}

when会判断第一个参数的真与假,如果是真,则执行第一个callback,如果是假,
则执行默认的方法,我的那段代码就只设置了真的时候需要执行的代码,因为条件有三种,
不只有两种。这样的话可以使代码易读性更好,当然也可以拆分子句,
但是when这个用法相对更赞。

laravel 框架结合关联查询 when()用法分析

如上用法直接用关联表中的字段作为搜索条件就更赞了!!!

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP5.0对象模型探索之抽象方法和抽象类
Sep 05 PHP
session 的生命周期是多长
Oct 09 PHP
php array_flip() 删除数组重复元素
Jan 14 PHP
php模拟asp中的XmlHttpRequest实现http请求的代码
Mar 24 PHP
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
Jan 19 PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
Apr 24 PHP
在PHP中运行Linux命令并启动SSH服务的例子
Jun 12 PHP
php socket实现的聊天室代码分享
Aug 16 PHP
PHP中让curl支持sock5的代码实例
Jan 21 PHP
php如何连接sql server
Oct 16 PHP
详解php比较操作符的安全问题
Dec 03 PHP
php设计模式之观察者模式定义与用法经典示例
Sep 19 PHP
PHP实现微信提现功能(微信商城)
Nov 21 #PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
Nov 21 #PHP
PHP框架实现WebSocket在线聊天通讯系统
Nov 21 #PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 #PHP
使用PHP开发留言板功能
Nov 19 #PHP
关于Laravel参数验证的一些疑与惑
Nov 19 #PHP
php传值和传引用的区别点总结
Nov 19 #PHP
You might like
微信公众平台接口开发入门示例
2014/12/24 PHP
php生成唯一的订单函数分享
2015/02/02 PHP
CodeIgniter分页类pagination使用方法示例
2016/03/28 PHP
在php7中MongoDB实现模糊查询的方法详解
2017/05/03 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
用Javascript数组处理多个字符串的连接问题
2009/08/20 Javascript
Javascript 面向对象编程(一) 封装
2011/08/28 Javascript
javascript scrollTop正解使用方法
2013/11/14 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
JS脚本实现动态给标签控件添加事件的方法
2016/06/02 Javascript
vue组件name的作用小结
2018/05/23 Javascript
node.js 微信开发之定时获取access_token
2020/02/07 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
在Python中使用NLTK库实现对词干的提取的教程
2015/04/08 Python
使用Python程序抓取新浪在国内的所有IP的教程
2015/05/04 Python
django实现分页的方法
2015/05/26 Python
Python中的sort()方法使用基础教程
2017/01/08 Python
Python用 KNN 进行验证码识别的实现方法
2018/02/06 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)
2019/01/08 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
加拿大消费电子和手机购物网站:The Source
2017/01/28 全球购物
澳大利亚领先的女帽及配饰公司:Morgan&Taylor
2019/12/01 全球购物
请问如下代码执行后a和b的值分别是什么
2016/05/05 面试题
成人大专自我鉴定范文
2013/10/19 职场文书
售后服务科岗位职责范文
2013/11/13 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
就业协议书
2014/09/12 职场文书
关于工作经历的证明书
2014/10/11 职场文书
财务经理岗位职责
2015/01/31 职场文书
西柏坡导游词
2015/02/05 职场文书
2016年国庆节宣传标语
2015/11/25 职场文书
Python基础之函数嵌套知识总结
2021/05/23 Python
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL