Eloquent 不支持开箱即用的三元关系。这是因为当正常的二元关系更合适时,通常会错误地使用三元关系。例如,我可以说Fuel 实体实际上是Truck-Trip 关系上的元数据,应该放在数据透视表上。
如果您完全 100% 确定您的三元关系是正确需要的,那么我认为您最好的选择是制作一个单独的模型 TruckTrip 即:
class TruckTrip extends Model {
public function truck() {
return $this->belongsTo(Truck::class);
}
public function trip() {
return $this->belongsTo(Trip::class);
}
public function fuel() {
return $this->belongsTo(Fuel::class);
}
}
然后,您可以使用:hasManyThrough 例如
,而不是直接关联 Truck、Trip 和 Fuel
class Trip extends Model {
public function trucks() {
return $this->hasManyThrough(Truck::class, TruckTrip::class);
}
public function fuel() {
return $this->hasManyThrough(Fuel::class, TruckTrip::class);
}
}
同样,您可以将卡车与旅行和燃料需求相关联,并将燃料需求与卡车和旅行相关联