简体   繁体   English

Laravel获得相关模型的相关模型

[英]Laravel get related models of related models

I have a RepairRequest model, which is associated with a Vehicle. 我有一个与车辆相关联的RepairRequest模型。

class RepairRequest extends \Eloquent {
    public function vehicle() {
        return $this->belongsTo('Vehicle');
    }
}


class Vehicle extends \Eloquent {
    public function requests() {
        return $this->hasMany('RepairRequest');
    }
}

I would like to get all RepairRequests for the vehicle associated with a given RepairRequest, so I do 我想获得与给定RepairRequest相关联的车辆的所有RepairRequests,所以我这样做

return RepairRequests::find($id)->vehicle->requests;

This works fine. 这很好用。

However, RepairRequests have RepairItems: 但是,RepairRequests有RepairItems:

// RepairRequest class
public function repairItems() {
    return $this->hasMany('RepairItem', 'request_id');
}

// RepairItem class
public function request() {
    return $this->belongsTo('RepairRequest', 'request_id');
}

which I would like to return too, so I do 我也想回来,所以我这样做

return RepairRequests::find($id)->vehicle->requests->with('repairItems');

but I get the following exception: 但我得到以下异常:

Call to undefined method Illuminate\Database\Eloquent\Collection::with()

How can I write this so that the returned json includes the RepairItems in the RepairRequest json? 我怎么写这个,以便返回的json包含RepairRequest json中的RepairItems?

Load related models using load method on the Collection: 在Collection上使用load方法加载相关模型:

return RepairRequests::find($id)->vehicle->requests->load('repairItems');

which is basically the same as: 这基本上与:

$repairRequest = RepairRequests::with('vehicle.requests.repairItems')->find($id);

return $repairRequest->vehicle->requests;

我建议急切加载一切。

return RepairRequests::with('vehicle.requests.repaireItems')->find($id);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM