Есть ли способ вернуть родительскую модель с отношением, но вернуть только некоторые строки отношения, используя where in?
Это может быть довольно запутанным, позвольте мне объяснить.
На данный момент у меня есть 2 модели, Здания и комнаты, в 1 здании может быть много комнат.
Я хочу иметь возможность передавать массив идентификаторов комнат и возвращать сайты и только те комнаты, которые находятся в массиве.
Вот что у меня есть на данный момент
if($request->input('ids') && !is_null($request->input('ids'))){
$ids = explode(',',$request->input('ids'));
//Exploded ids looks like this "2,4,11,55,56"
$buildings = Buildings::join('rooms')->whereIn('rooms.id',$ids)->get();
} else {
$buildings = Buildings::whereHas('rooms')->get();
}
В настоящий момент это вернет все здания, в которых есть комната с идентификатором в массиве ids
, и все ее комнаты, что в итоге приведет к возвращению здания с более чем 200 комнатами. Мне нужно вернуть здание и ТОЛЬКО комнаты с идентификатором в этом массиве.
Возможно ли это?
Я знаю, что могу сделать это наоборот и получить все комнаты в качестве родителя, а затем получить здания, но мне нужно, чтобы здания были родителями, так как я выполняю такой foreach, как этот, с результатами
foreach($buildings as $key => $building){
<h1>{{$building->name}}</h1>
foreach($building->rooms as $k => $room){
<p>{{$room->name}}</p>
}
}
В случае, если это по-прежнему сбивает с толку, сценарий реального мира заключается в том, что я создаю PDF комнат. Комнаты можно выбрать, поставив галочку рядом с комнатой в списке комнат. Затем я должен быть в состоянии передать массив идентификаторов комнат и получить все здания, которые содержат одну из комнат. Затем получите все комнаты для каждого здания, в котором находится номер комнаты в массиве.