2016-03-17 30 views
6

Hãy nói rằng tôi có những mối quan hệTải nhiều mức độ mong muốn ở Laravel?

class Invitation 
{ 
    public function invitedPeople() 
    { 
     return $this->belongsTo('App\Person', 'personID'); 
    } 
} 

class Person 
{ 
    public function apartments() 
    { 
     return $this->belongsToMany('App\Apartment', 'apartment_person', 'personID', 'apartmentID');   
    } 
} 

class Apartment 
{ 
    public function city() 
    { 
     return $this->belongsTo('App\City', 'cityID'); 
    } 
} 

Câu hỏi của tôi ở đây là, có bao nhiêu mức lồng nhau chúng ta có thể có khi sử dụng Laravel tải háo hức? Tôi đã thử truy vấn này và nó không hoạt động, ai đó có thể đề xuất một công việc xung quanh cho điều này?

return Invitation::with(['invitedPeople', 'invitedPeople.apartments', 'invitedPeople.apartments.city']) 
+0

Bạn có thể lồng bao nhiêu cấp tùy ý. Xác định "không hoạt động", vì điều đó sẽ hoạt động tốt. Điều duy nhất tôi thấy là bạn đã không gọi '-> get()' ở cuối. – patricus

+0

Không có giới hạn nhưng bạn có thể tối ưu hóa điều này bằng cách thực hiện 'Lời mời :: với (['invitedPeople.apartments.city'])'. – user3158900

+0

@ user3158900 Lời mời :: với ('invitedPeople.apartments.city']) sẽ thực hiện ba lần tham gia bao gồm invitePeople, căn hộ và thành phố? – ggderas

Trả lời

7

Thay đổi nó để

return Invitation::with('invitedPeople.apartments.city')->get() 

Nó sẽ tải háo hức tất cả các dữ liệu có liên quan cho bạn. Bạn đã bỏ lỡ hàm get(). Bạn có thể làm tổ sâu như nó có thể đi.

Các vấn đề liên quan