laravel - Laravel 有条件的 where 与 eloquent
问题描述
我有传递简单参数的基本功能:
public function template($person)
{
$offers = Offer::where([
['person', $person],
['published', true],
])
->orderBy('created_at','desc')->paginate(9);
}
现在我想让它成为confitional,如果有一个参数或没有:
public function template($person)
{
if ($person) {
$offers = Offer::where([
['person', $person],
['published', true],
])
->orderBy('created_at','desc')->paginate(9);
} else {
$offers = Offer::where([
['published', true],
])
->orderBy('created_at','desc')->paginate(9);
}
}
这可行,但这不是一个好习惯,如果我将有更多参数怎么办:
public function template($person, $country, $region) {
....
}
然后我将不得不制作多个案例。是否有任何帮助功能使 eloquent 变得更简单?
解决方案
使用when
条件函数以获得更好的代码样式,例如 查看更多
$offers = Offer::when($person,function($query,$person) {
return $query->where('person',$person);
})->where('published', true)
->orderBy('created_at','desc')->paginate(9);
推荐阅读
- c - 是否有任何 C 函数可以评估标准库中定义的字符串表达式?
- cloudflarestream - 将 Cloudflare 播放器集成到 Cloudflare 流的 Angular 7 中
- mysql - 使用 sum 时左连接不显示所有数据
- git - 如何标记或分类 git 提交
- swift - 字体?)-> 一些视图。但是为什么在 siwftUI 中添加修饰符时我们会这样使用:ext("Hello, World!").font(.body)?为什么我们添加点 ' 。'?
- python - Python - 嵌套循环与“in”运算符导致几乎双倍的运行时间
- c# - 创建自定义可绑定 WPF 控件的正确方法
- javascript - 当我尝试使用 props 传递的函数时,为什么 preventDefault 停止工作?
- angular - 如何通过单击相应的删除图标从 UI 中删除字段 - Angular
- scala - Akka-actor java.lang.NoClassDefFoundError: akka/actor/CoordinatedShutdown$$anonfun$totalTimeout