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 相关文章推荐
PHP.MVC的模板标签系统(四)
Sep 05 PHP
用PHP和ACCESS写聊天室(七)
Oct 09 PHP
PHP iconv 函数转gb2312的bug解决方法
Oct 11 PHP
php读取javascript设置的cookies的代码
Apr 12 PHP
Linux下CoreSeek及PHP扩展模块的安装
Sep 23 PHP
奉献出一个封装的curl函数 便于调用(抓数据专用)
Jul 22 PHP
php中mail函数发送邮件失败的解决方法
Dec 24 PHP
php实现通过ftp上传文件
Jun 19 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
Dec 19 PHP
详解Laravel5.6 Passport实现Api接口认证
Jul 27 PHP
Ajax+Jpgraph实现的动态折线图功能示例
Feb 11 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
Dec 16 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
新版PHP极大的增强功能和性能
2006/10/09 PHP
php中比较简单的导入phpmyadmin生成的sql文件的方法
2011/06/28 PHP
详解PHP数组赋值方法
2015/11/07 PHP
通过继承IHttpHandle实现JS插件的组织与管理
2010/07/13 Javascript
JS date对象的减法处理实现代码
2010/12/28 Javascript
JavaScript打开word文档的实现代码(c#)
2012/04/16 Javascript
js实现在文本框光标处添加字符的方法介绍
2012/11/24 Javascript
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
2013/05/17 Javascript
JS生成随机字符串的多种方法
2014/06/10 Javascript
js键盘事件的keyCode
2014/07/29 Javascript
javascript实现淘宝幻灯片广告展示效果
2015/04/27 Javascript
javascript和jquery实现用户登录验证
2016/05/04 Javascript
关于session和cookie的简单理解
2016/06/08 Javascript
jQuery Easyui Datagrid实现单行的上移下移及保存移动的结果
2016/08/15 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
JS双击变input框批量修改内容
2016/12/12 Javascript
简单实现jQuery级联菜单
2017/01/09 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
JS闭包可被利用的常见场景小结
2017/04/09 Javascript
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
2020/01/06 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
2020/04/16 Python
matplotlib教程——强大的python作图工具库
2020/10/15 Python
python实现网页录音效果
2020/10/26 Python
css3 中translate和transition的使用方法
2020/03/26 HTML / CSS
英国时尚女装购物网站:Missguided
2018/08/23 全球购物
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
青年创业培训欢迎词
2014/01/10 职场文书
技能比武方案
2014/05/21 职场文书
电气工程及其自动化专业毕业生自荐信
2014/06/21 职场文书
2014年平安创建工作总结
2014/11/24 职场文书