如果我有一个可选的变量,并且我只想让它在它上面进行搜索(如果已定义),我知道我可以这样做,但有没有办法在其他地方定义函数,所以我不需要一遍又一遍地重写相同的匿名函数?或者是解决这个问题的其他任何好的替代方案吗?
.......->where(function($query) use ($gender){
if ($gender) {
$query->where('gender', '=', $gender);
}
})->get();
Run Code Online (Sandbox Code Playgroud)
小智 22
从Laravel 5.2.27开始,您可以使用条件子句
例如:
->when($gender, function($query) use ($gender) {
$query->where('gender', '=', $gender);
})
->get();
Run Code Online (Sandbox Code Playgroud)
Lau*_*nce 10
您可以使用动态范围
class User extends Eloquent {
public function scopeGender($query, $gender)
{
if ($gender) {
return $query->whereGender($gender);
}
return $query;
}
}
Run Code Online (Sandbox Code Playgroud)
然后贯穿整个申请
...->gender($gender)->get();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11199 次 |
| 最近记录: |