Laravel Eloquent如果变量存在查询就可以了

时间:2018-05-08 21:28:06

标签: php laravel eloquent

我有一个包含两个可选字段的表单,日期和位置。如果用户选择其中任何一个,则查询将使用他们选择的字段以及必填字段。有没有办法使用eloquent所以如果变量有值,请在查询中使用它,如果不忽略它。我知道我可以使用几个if语句,但我想知道是否有更有效的方法。

2 个答案:

答案 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();

您必须稍微修改一下才能按照自己的喜好进行修改。