$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();
}
答案 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
的查询都可以在一个查询中对它们进行分组。