ฉันกำลังพยายามกำจัดคำค้นหาที่ไม่จำเป็นบนเว็บไซต์ของฉัน แต่กำลังดิ้นรนเพื่อจัดการกับ Eager Loading และ Lazy Loading ผู้ใช้ทั้งหมดบนไซต์ของฉันมีรายชื่อ และรายชื่อมีผู้ใช้หลายคน พวกเขาเชื่อมต่อกันผ่านตาราง list_users ทุกรายการจะมี "คำสั่งซื้อ" หนึ่งรายการที่เกี่ยวข้องกัน นี่คือรุ่นผู้ใช้:
รุ่นผู้ใช้:
public function listings(){
return $this->belongsToMany(Listing::class)->withPivot('role_id');
}
รูปแบบรายการ:
public function order(){
return $this->hasOne(Order::class)->first();
}
แดชบอร์ดปัจจุบันของฉันถูกโหลดโดยการเรียก viewListings นี้ใน UserController:
public function viewListings(){
$user = Auth::user();
$listings = $user->listings()->orderBy('created_at','desc')->get();
return view('user.listings', compact('listings'));
}
ปัญหาเกิดขึ้นใน blade view user.listings ของฉัน โดยที่ฉันมี foreach loop สำหรับทุกรายการ จากนั้นจึงเรียกแต่ละคำสั่งซื้อเช่นกัน ฉันต้องการวิธีส่งรายการไปยังเพจพร้อมคำสั่งซื้อที่เกี่ยวข้อง
@foreach($listings as $listing)
@if($listing->order()->status == 'completed')
{{-- Display the listing details here --}}
@endif
@endforeach
คำแนะนำใด ๆ เกี่ยวกับสถานการณ์ข้างต้นจะได้รับการชื่นชมอย่างมาก! ฉันแน่ใจว่ามีวิธีแก้ไขปัญหา Laravel ง่าย ๆ สำหรับสิ่งนี้ที่ฉันมองข้ามไป