如何在laravel中加载嵌套关系

时间:2019-04-29 12:44:22

标签: php laravel

我有3个模型,我想从a开始并加载与b的关系,我也想在b和c之间加载关系,那有可能吗?这是我想在代码中执行的操作:

AccommodationRoomModel which is the B model:
public function accommodation(){
        return $this->belongsTo(Accommodation::class);
    }

  public function roomPricingHistory(){
    return $this->hasMany(RoomPricingHistory::class);
}

并在住宿模式中:

public function accommodationRoom()
{
    return $this->Hasmany(AccommodationRoom::class);
}

最后确定房间的价格历史:

 public function accommodationRoom(){
    return $this->belongsTo(AccommodationRoom::class);
}

现在在我的住宿控制器中,我想获取房间的所有住宿,并且要从房间中获取价格,所以就在这里

A = Accomodation
B = Room
C = price

我想这样打电话

From A get B and The relation Of it with C and show all in A

2 个答案:

答案 0 :(得分:1)

nested-eager-loading

A :: with('B.C');

答案 1 :(得分:1)

您可以为此使用Laravels嵌套的预加载:

来自docs

  

要急于加载嵌套关系,可以使用“点”语法。对于   例如,让我们急于加载该书的所有作者和所有   一位雄辩的陈述中作者的个人联系人:

$books = App\Book::with('author.contacts')->get();

在您的情况下:

$accomodations = Accomodation::with('accommodationRoom.roomPricingHistory')->get();