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 相关文章推荐
一个简单的自动发送邮件系统(二)
Oct 09 PHP
vBulletin HACK----关于排版的两个HACK
Oct 09 PHP
PHP中用header图片地址 简单隐藏图片源地址
Apr 09 PHP
深入理解PHP原理之异常机制
Aug 21 PHP
zend api扩展的php对象的autoload工具
Apr 18 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
Nov 04 PHP
CI框架验证码CAPTCHA辅助函数用法实例
Nov 05 PHP
Yii实现自动加载类地图的方法
Apr 01 PHP
Zend Framework框架路由机制代码分析
Mar 22 PHP
php similar_text()函数的定义和用法
May 12 PHP
PHP list() 将数组中的值赋给变量的简单实例
Jun 13 PHP
PHP 代码简洁之道(小结)
Oct 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 从数据库提取二进制图片的处理代码
2009/09/09 PHP
PHP使用flock实现文件加锁的方法
2015/07/01 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
2015/11/24 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
2018/05/31 PHP
几款极品的javascript压缩混淆工具
2007/05/16 Javascript
cnblogs csdn 代码运行框实现代码
2009/11/02 Javascript
JavaScript学习笔记(一) js基本语法
2011/10/25 Javascript
让复选框只能选择一项的方法
2013/10/08 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
jQuery.Callbacks()回调函数队列用法详解
2016/06/14 Javascript
详解vue 配合vue-resource调用接口获取数据
2017/06/22 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
React 使用Hooks简化受控组件的状态绑定
2019/03/18 Javascript
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
如何在Vue中使localStorage具有响应式(思想实验)
2020/07/14 Javascript
[03:13]DOTA2-DPC中国联赛1月25日Recap集锦
2021/03/11 DOTA
python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
2014/08/25 Python
教你用一行Python代码实现并行任务(附代码)
2018/02/02 Python
python库lxml在linux和WIN系统下的安装
2018/06/24 Python
Python常用的json标准库
2019/02/19 Python
Django如何防止定时任务并发浅析
2019/05/14 Python
Pytorch之parameters的使用
2019/12/31 Python
基于keras中的回调函数用法说明
2020/06/17 Python
Django生成数据库及添加用户报错解决方案
2020/10/09 Python
美国汽车性能部件和赛车零件网站:Vivid Racing
2018/03/27 全球购物
全球最大的在线橄榄球商店:Lovell Rugby
2018/05/20 全球购物
报告会主持词
2014/04/02 职场文书
医院义诊活动总结
2014/07/04 职场文书
元旦晚会活动总结
2014/07/09 职场文书
行政主管岗位职责范本
2015/04/09 职场文书
《花钟》教学反思
2016/02/17 职场文书
大学生奶茶店创业计划书
2019/06/25 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers
带你学习MySQL执行计划
2021/05/31 MySQL