Текущая логическая установка:Уплотненного hasMany жадной загрузки функция Laravel
- Комната может иметь много объектов.
- Объект может иметь множество баллов.
- Проблема в том, что объекты могут иметь или не иметь никаких баллов.
Сценарий: Я хочу, чтобы получить только те объекты, которые имеют ряд, основанный на room_id
я обеспечиваю.
Покушение:
$audits = Room::where('id', $room_id)
->has('objects.scores')
->get();
Что я вывод, что это возвращение всех объектов, даже если только несколько объектов, на самом деле имеют балл.
Отношение (комнаты):
public function objects()
{
return $this->hasMany('App\Object');
}
Отношение (объекты):
public function scores()
{
return $this->hasMany('App\Scores');
}
отношения (результаты):
public function object()
{
return $this->belongsTo('App\Object');
}
Как я могу запросить обратное? Или правильный путь! Мне нужны только объекты, у которых есть оценка, связанная с ними, и, следовательно, все, что связано с ними (комнаты и т. Д.)
Большое спасибо.
Точки обозначение для вложенного запроса отношения выглядит хорошо; Я чувствую, что это должно возвращать правильные результаты (только «Room's», у которых есть «Object», который имеет «Score». Как вы определяете отношения «object» в «Room»? И также, интересно, может ли это быть хороший случай для использования отношения hasManyThrough()? – camelCase
@camelCase, я добавил отношение Object к описанию. – Ben
Что делает «dd (Room :: where ('id', $ room_id) -> has (' objects.scores ') -> toSql()); "show? –