【发布时间】:2020-04-15 04:48:25
【问题描述】:
使用以下模型,用户与汽车有 2x 关系。两者都指向同一张表,但使用不同的字段(daily_car_id +weekend_car_id):
class User extends Model
public function dailyCar() {
return $this->belongsTo(Car::class, 'daily_car_id', 'id');
}
public function weekendCar() {
return $this->belongsTo(Car::class, 'weekend_car_id', 'id');
}
}
除了急切加载之外,这一切都完美无缺:
User::with(['dailyCar', 'weekendCar'])->findOrFail($id);
预期
# 10 is the weekend car id and 12 is the daily
SELECT * FROM `car` WHERE `car`.`id` in (10, 12)
实际结果(不正确意外)
# 10 is the weekend car id and 12 is the daily
SELECT * FROM `car` WHERE `car`.`id` in (10)
SELECT * FROM `car` WHERE `car`.`id` in (12)
当对同一个表使用多个 belongsTo 关系时,有没有办法预先加载?
【问题讨论】:
-
不,Eloquent 无法跨关系合并查询。
-
嗯,我想这是有道理的。我可能可以通过运行我自己的查询并将其合并在一起来解决它
标签: laravel laravel-5 eloquent eager-loading