如何渴望对同一张表加载多个belongsTo关系?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何渴望对同一张表加载多个belongsTo关系?相关的知识,希望对你有一定的参考价值。

[使用以下模型,用户与汽车的关系是2倍。两者都指向同一张表,但是使用不同的字段(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关系时,是否有一种渴望加载的方法?

答案

您可以更改对此的急切加载:

$user = User::find($id);
$car = Car::where('id', $user->dailyCar->id)->where('id', $user->weekendCar->id)->get();

以上是关于如何渴望对同一张表加载多个belongsTo关系?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Eloquent:渴望加载多个嵌套关系

如何从 belongsTo 关系中预先加载一组值

如何渴望加载多态关系的不同嵌套关系?

如何通过多对多关系获取与同一张表相关的行 - Laravel

同一张表上的多个关系

如何找出同一张表中特定状态的多个计数