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 cookies中删除的一般赋值方法
May 07 PHP
php标签云的实现代码
Oct 10 PHP
php计算函数执行时间的方法
Mar 20 PHP
PHP判断IP并转跳到相应城市分站的方法
Mar 25 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
May 11 PHP
php动态函数调用方法
May 21 PHP
Yii使用Captcha验证码的方法
Dec 28 PHP
php强大的时间转换函数strtotime
Feb 18 PHP
php轻松实现文件上传功能
Mar 03 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
Oct 26 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 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冒泡排序算法的深入理解
2013/06/09 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
PHP Web木马扫描器代码分享
2015/09/06 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
2016/07/08 PHP
PHP 断点续传实例详解
2017/11/11 PHP
jquery中防刷IP流量软件影响统计的一点对策
2011/07/10 Javascript
js调用图片隐藏&显示实现代码
2013/09/13 Javascript
jQuery中的each()详细介绍(推荐)
2016/05/25 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
2016/08/24 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
2016/12/19 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
Vue实现动态响应数据变化
2017/04/28 Javascript
vue.js移动端app实战1:初始配置详解
2017/07/24 Javascript
基于react组件之间的参数传递(详解)
2017/09/05 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
基于bootstrap写的一点localStorage本地储存
2017/11/21 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
laravel-admin 与 vue 结合使用实例代码详解
2019/06/04 Javascript
js实现点击烟花特效
2020/10/14 Javascript
如何使用 vue-cli 创建模板项目
2020/11/19 Vue.js
PyCharm代码格式调整方法
2018/05/23 Python
python flask实现分页的示例代码
2018/08/02 Python
tensorflow 模型权重导出实例
2020/01/24 Python
python 使用while循环输出*组成的菱形实例
2020/04/12 Python
Python Json数据文件操作原理解析
2020/05/09 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
PyTorch安装与基本使用详解
2020/08/31 Python
python绘图pyecharts+pandas的使用详解
2020/12/13 Python
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
LODI女鞋在线商店:阿利坎特的鞋类品牌
2019/02/15 全球购物
美国踏板车和轻便摩托车销售网站:Mega Motor Madness
2020/02/26 全球购物
班级安全教育实施方案
2014/02/23 职场文书
英语三分钟演讲稿
2014/08/19 职场文书
php修改word的实例方法
2021/11/17 PHP
Python采集股票数据并制作可视化柱状图
2022/04/04 Python
MySQL慢查询中的commit慢和binlog中慢事务的区别
2022/06/16 MySQL