是否有可能通过同级模型的hasMany
关系检索父模型的belongsTo
关系。我有以下Models
:
汽车
public function wheels() {
return $this->hasMany('App\Models\Wheel');
}
public function seats() {
return $this->hasMany('App\Models\Seat');
}
轮
// @property int|null $car_id Type: int(10) unsigned, Extra: , Default: null, Key: MUL
public function car() {
return $this->belongsTo('App\Models\Car');
}
座位
// @property int|null $car_id Type: int(10) unsigned, Extra: , Default: null, Key: MUL
public function car() {
return $this->belongsTo('App\Models\Car');
}
我想这样做是获取汽车的车轮给予座($seat->wheels
):
座位
public function car() {
return $this->belongsTo('App\Models\Car');
}
public function wheels() {
// Works
// return $this->car->wheels;
// What I would like to do, but doesn't work
return $this->hasManyThrough('App\Models\Wheel', 'App\Models\Car');
}
默认情况下,HasManyThrough
是二HasMany
关系的组合。
你的情况,你必须选择的第一家外国和本地密钥:
public function wheels() {
return $this->hasManyThrough('App\Models\Wheel', 'App\Models\Car', 'id', null, 'car_id');
}
没有与列压倒一切的将被固定在Laravel 5.8的一个问题:https://github.com/laravel/framework/pull/25812
在此期间,你可以使用一个BelongsToMany
关系:
public function wheels() {
return $this->belongsToMany(Wheel::class, 'cars', 'id', 'id', 'car_id', 'car_id');
}