2016-04-30 2 views
0

мне нужна помощь на Laravel 5 (используйте красноречив)Laravel Relationship (присоединиться где)

У меня есть 2 таблицы

Модель драйвера драйверы

  • ID
  • компания

Модель DriverOnline drivers_online

  • идентификатор
  • имя
  • driver_id

мне нужно seatch результат на (commany = 1 и driver_id = driver.id) помочь мне!

ответ

2

Если вы хотите только получать 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(); 
+0

'' ' $ драйвера = Driver :: с ([ 'driversOnline' => функции ($ запроса) { $ query-> где ('онлайн', '=', 1); }]) -> где ('company_id', '=', 1) -> получаем(); '' ' – gibAlex

+0

, но заведите меня на драйвер – gibAlex

+0

Если вы хотите только выбрать онлайн-драйверы, вы должны его инвертировать. 'DriverOnline :: с ('driver') -> где ('онлайн', true) -> get();' – Josh