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

Tom*_*ald 7 php rest laravel eloquent laravel-4

我有一个与车辆相关联的RepairRequest模型.

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


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

我想获得与给定RepairRequest相关联的车辆的所有RepairRequests,所以我这样做

return RepairRequests::find($id)->vehicle->requests;
Run Code Online (Sandbox Code Playgroud)

这很好用.

但是,RepairRequests有RepairItems:

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

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

我也想回来,所以我这样做

return RepairRequests::find($id)->vehicle->requests->with('repairItems');
Run Code Online (Sandbox Code Playgroud)

但我得到以下异常:

Call to undefined method Illuminate\Database\Eloquent\Collection::with()
Run Code Online (Sandbox Code Playgroud)

我怎么写这个,以便返回的json包含RepairRequest json中的RepairItems?

Jar*_*zyk 9

使用loadCollection上的方法加载相关模型:

return RepairRequests::find($id)->vehicle->requests->load('repairItems');
Run Code Online (Sandbox Code Playgroud)

这基本上与:

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

return $repairRequest->vehicle->requests;
Run Code Online (Sandbox Code Playgroud)

  • 他们需要在 Laravel 文档中包含它,或者至少在它存在时更清楚地解释它。谢谢你的例子。 (3认同)