我有一个包含两个可选字段的表单,日期和位置。如果用户选择其中任何一个,则查询将使用他们选择的字段以及必填字段。有没有办法使用eloquent所以如果变量有值,请在查询中使用它,如果不忽略它。我知道我可以使用几个if语句,但我想知道是否有更有效的方法。
答案 0 :(得分:1)
是的,你可以这样做。只要条件具有来自POST的值
,就将其链接起来$query = Item::where(id,$id);
if ($request->date) {
$query->where(date,$request->date);
}
if ($request->location) {
$query->where(location,$request->location);
}
$items = $query->get();
答案 1 :(得分:0)
$query = User::query();
// From Laravel 5.4 you can pass the same condition value as a parameter
$query->when($request->firstCondition, function ($query, $role) {
return $query->where('role_id', $role);
});
$authors = $query->get();
您必须稍微修改一下才能按照自己的喜好进行修改。