Если вы хотите только получать Driver
на основе состояния, вы можете просто сделать это:
Driver::with('online')->where('company', 1)->get();
Если оговорка об отношениях, используйте with
и указать запрос по этому поводу.
$company = 1;
$drivers = Driver::with(['online' => function($query) use ($company)
{
$query->where('company', $company);
}]);
Смотрите "нетерпеливое Ограничение Load":
https://laravel.com/docs/5.0/eloquent
принять к сведению моего use
. Это позволяет включать переменные из области действия в ваш экземпляр Closure.
И имейте в виду, что если вы используете какое-либо решение, вы должны установить связь. Обратитесь к ссылке, которую я поделился, с дополнительной информацией об этом.
Редактировать: Согласно нашему разговору.
$drivers = Driver::where('company_id','=',1)
->with('driversOnline')
->whereHas('driversOnline', function($query) {
$query->where('online','=',1);
})
->get();
'' ' $ драйвера = Driver :: с ([ 'driversOnline' => функции ($ запроса) { $ query-> где ('онлайн', '=', 1); }]) -> где ('company_id', '=', 1) -> получаем(); '' ' – gibAlex
, но заведите меня на драйвер – gibAlex
Если вы хотите только выбрать онлайн-драйверы, вы должны его инвертировать. 'DriverOnline :: с ('driver') -> где ('онлайн', true) -> get();' – Josh