加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

laravel中的when用法是怎么样,有什么要特别注意的

发布时间:2023-06-24 14:52:06 所属栏目:PHP教程 来源:
导读:跟大家讲解下有关“laravel中的when用法是怎样,有什么要注意的”的内容 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了相关资料,希望小伙伴们看了有所帮助。

Laravel 5.6 里面的when用法:
跟大家讲解下有关“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这个用法相对更赞。
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!