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 的 __FILE__ 常量
Jan 15 PHP
让PHP支持页面回退的两种方法
Jan 10 PHP
php的urlencode()URL编码函数浅析
Aug 09 PHP
PHP 读取Postgresql中的数组
Apr 14 PHP
php实现多张图片上传加水印技巧
Apr 18 PHP
PHP无限分类(树形类)的深入分析
Jun 02 PHP
php错误级别的设置方法
Jun 17 PHP
smarty半小时快速上手入门教程
Oct 27 PHP
一波PHP中cURL库的常见用法代码示例
May 06 PHP
JSON两种结构之对象和数组的理解
Jul 19 PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
Oct 11 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
UTF8编码内的繁简转换的PHP类
2009/07/09 PHP
PHP开发中常用的三个表单验证函数使用小结
2010/03/03 PHP
javascript showModalDialog,open取得父窗口的方法
2010/03/10 Javascript
jQuery 表格工具集
2010/04/25 Javascript
JavaScript中输出标签的方法
2014/08/27 Javascript
jquery+ajax验证不通过也提交表单问题处理
2014/12/12 Javascript
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
js代码实现点击按钮出现60秒倒计时
2021/01/28 Javascript
Nodejs全局安装和本地安装的不同之处
2016/07/04 NodeJs
关于验证码在IE中不刷新的快速解决方法
2016/09/23 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
Angular4学习笔记之实现绑定和分包
2017/08/01 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
微信小程序实现默认第一个选中变色效果
2018/07/17 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
2020/02/06 Javascript
实现一个Vue自定义指令懒加载的方法示例
2020/06/04 Javascript
pyramid配置session的方法教程
2013/11/27 Python
python从网络读取图片并直接进行处理的方法
2015/05/22 Python
Python读取键盘输入的2种方法
2015/06/16 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
关于Python中异常(Exception)的汇总
2017/01/18 Python
python字符串常用方法
2018/06/14 Python
python 实现在tkinter中动态显示label图片的方法
2019/06/13 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
大学生毕业自我鉴定范文
2013/11/03 职场文书
四风问题自查报告剖析材料
2014/02/08 职场文书
村庄环境整治方案
2014/05/15 职场文书
行为习惯主题班会
2015/08/14 职场文书
消防安全培训工作总结
2015/10/23 职场文书
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python