มีวิธีใดบ้างที่จะส่งคืนโมเดลพาเรนต์ที่มีความสัมพันธ์ แต่ส่งคืนแถวความสัมพันธ์เพียงบางแถวโดยใช้ 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();
}
ในขณะนี้ สิ่งนี้จะส่งคืนอาคารทั้งหมดที่มีห้องซึ่ง id อยู่ในอาร์เรย์ ids
และห้องทั้งหมดในห้องนั้น ซึ่งสุดท้ายจะส่งคืนอาคารที่มีห้องมากกว่า 200 ห้อง ฉันต้องการมันเพื่อคืนอาคารและเฉพาะห้องที่มีรหัสในอาร์เรย์นั้นเท่านั้น
เป็นไปได้ไหม?
ฉันรู้ว่าฉันทำแบบผกผันได้ และได้ทุกห้องเมื่อผู้ปกครองได้อาคาร แต่ฉันต้องการอาคารที่เป็นผู้ปกครองในขณะที่ฉันกำลังดำเนินการแบบนี้พร้อมผลลัพธ์
foreach($buildings as $key => $building){
<h1>{{$building->name}}</h1>
foreach($building->rooms as $k => $room){
<p>{{$room->name}}</p>
}
}
ในกรณีที่ยังสับสนอยู่ สถานการณ์จริงคือฉันกำลังสร้างห้องในรูปแบบ PDF สามารถเลือกห้องได้โดยทำเครื่องหมายที่ช่องถัดจากห้องในรายการห้อง จากนั้น ฉันจะต้องสามารถส่งผ่านอาร์เรย์ของรหัสห้อง และรับอาคารทั้งหมดที่มีห้องใดห้องหนึ่งได้ จากนั้นรับห้องทั้งหมดสำหรับแต่ละอาคารที่มีรหัสห้องอยู่ในอาร์เรย์