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 相关文章推荐
第十节 抽象方法和抽象类 [10]
Oct 09 PHP
PHP出错界面
Oct 09 PHP
php环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
Nov 17 PHP
php的curl封装类用法实例
Nov 07 PHP
php从数组中随机选择若干不重复元素的方法
Mar 14 PHP
Zend Framework实现多文件上传功能实例
Mar 21 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
Dec 19 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
Jul 10 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
PHP实现的随机红包算法示例
Aug 14 PHP
浅谈laravel框架sql中groupBy之后排序的问题
Oct 17 PHP
Laravel框架之解决前端显示图片问题
Oct 24 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
BBS(php & mysql)完整版(七)
2006/10/09 PHP
php仿ZOL分页类代码
2008/10/02 PHP
php获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
yii2利用自带UploadedFile实现上传图片的示例
2017/02/16 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
JavaScript 实现??打印?理
2007/04/28 Javascript
javascript[js]获取url参数的代码
2007/10/17 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
2010/09/15 Javascript
JavaScript利用append添加元素报错的解决方法
2014/07/01 Javascript
javascript实现随机显示星星特效
2016/01/28 Javascript
Javascript 基础---Ajax入门必看
2016/07/06 Javascript
vue添加class样式实例讲解
2019/02/12 Javascript
Vue 刷新当前路由的实现代码
2019/09/26 Javascript
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
解决ant-design-vue中menu菜单无法默认展开的问题
2020/10/31 Javascript
解决nuxt 自定义全局方法,全局属性,全局变量的问题
2020/11/05 Javascript
详解vue中在父组件点击按钮触发子组件的事件
2020/11/13 Javascript
[04:49]2014DOTA2国际邀请赛 Newbee顺利挺进总决赛 ImbaTV独家专访
2014/07/19 DOTA
Python中asyncore的用法实例
2014/09/29 Python
python检查URL是否正常访问的小技巧
2017/02/25 Python
Python爬虫之模拟知乎登录的方法教程
2017/05/25 Python
对Python3使运行暂停的方法详解
2019/02/18 Python
Python企业编码生成系统之主程序模块设计详解
2019/07/26 Python
Python实现自动打开电脑应用的示例代码
2020/04/17 Python
Snapfish英国:在线照片打印和个性化照片礼品
2017/01/13 全球购物
大学生毕业自我评价范文分享
2013/11/07 职场文书
小学新教师培训方案
2014/02/03 职场文书
大专会计自我鉴定
2014/02/06 职场文书
根叔历年演讲稿
2014/05/20 职场文书
甜品店创业计划书
2014/08/14 职场文书
三严三实对照检查材料范文
2014/09/23 职场文书
国际贸易实训报告
2014/11/05 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
2015年新农村建设指导员工作总结
2015/07/24 职场文书
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫
Python OpenCV超详细讲解读取图像视频和网络摄像头
2022/04/02 Python