2016-10-17 5 views
0

У меня есть таблица maintenance со следующими полями: id, car_id, type, и name.Искать в других таблицах?

Как получить список записей от maintenance таблица, где type = 'car wash', но только с model_id = 5?

model_id Поле находится в таблице car. Таблица автомобилей со следующими полями: id, model_id, engine_size и color.

Как я могу использовать Maintenance::where для получения списка записей с соответствующими model_id в таблице car? Существует car_id в таблице maintenance, которая ссылается на таблицу car.

Должен ли я сделать что-то вроде этого:?

return Maintenance::where('type', 'car_wash')->where(function($query) { 
     // get a list a maintenance where model_id = 5 in a car table 
    }); 
+0

это не дублировать, снова прочитал вопрос. –

+0

@ chris85 В таблице 'maintenance' у него есть' car_id', а в 'car'table есть поля' id' и 'model_id'. –

+0

Я не понимал, что мне нужно использовать '-> join', потому что отношения уже настроены между Maintenance.php и Car.php (файлы модели php) –

ответ

1

Предполагая, что вы уже определили автомобили() отношение на модели технического обслуживания вы можете попробовать что-то вроде этого:

$model_id = 5; 
$type = 'car_wash'; 
return Maintenance::whereHas('cars',function($query) use($model_id,$type) { 
    $query->where('model_id',$model_id)->where('type',$type); 
    })->get(); 

Update для дальнейшего вопроса (пропустить, если $ model_id = 0):

return Maintenance::whereHas('cars',function($query) use($model_id,$type) { 
     if($model_id!=0){ 
      $query->where('model_id',$model_id); 
     } 
     $query->where('type',$type); 
     })->get(); 

Я не проверял, но он должен работать, иначе, дайте мне знать

+0

Это похоже на работу, спасибо. Пусть say 'model_id' равно 0, как я могу пропустить' $ query-> где ('model_id', $ model_id) 'в коде? –

Смежные вопросы