设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 站长学院 > PHP教程 > 正文

laravel中的when用法是怎样,有什么需注意的

发布时间:2022-12-22 08:42 所属栏目:121 来源:互联网
导读:跟大家讲解下有关laravel中的when用法是怎样,有什么要注意的的内容 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了相关资料,希望小伙伴们看了有所帮助。 Laravel 5.6 里面的when用法: $name = $request-get(name); //活动标题 $start_time = $r
  跟大家讲解下有关“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这个用法相对更赞。
 
  如上用法直接用关联表中的字段作为搜索条件就更赞了!!!
 
 

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读