加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

laravel中的when用法是怎样 有哪些要注意的

发布时间:2023-08-01 12:44:19 所属栏目:语言 来源:
导读:今天小编跟大家讲解下有关“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这个用法相对更赞。

如上用法直接用关联表中的字段作为搜索条件就更赞了!

(编辑:银川站长网)

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

    推荐文章