哪里有正确的方法?

时间:2017-01-21 14:59:29

标签: php laravel laravel-5.3

$provider是可选的,即使我已经使用了whereHas Eager Loading,在这种情况下使用with()是否正确?

public function findByStatus($status, $provider = null)
{
    $result = $this->hosts->with('logins')->where('status', $status);

    if ($provider) {
        $result->whereHas('logins', function ($query) use ($provider) {
            $query->where('provider', $provider);
        });
    }

    return $result->get();
}

1 个答案:

答案 0 :(得分:2)

你可以按照自己的方式使用它。但我会这样做。

$result = $this->hosts->whereHas('logins', function ($query) use ($status, $provider) {
    $query->where('status', $status);
    if ($provider) {
        $query->where('provider', $provider);
    }
    return $query;
})->get();

由于两个关于logins的查询都可以在一个查询中对它们进行分组。