gpt4 book ai didi

Laravel hasMany通过多态关系

转载 作者:行者123 更新时间:2023-12-03 23:36:38 24 4
gpt4 key购买 nike

我有一个交易表,其中每个 Transaction 属于 DriverCustomer - 所以我设置了一个多态关系他们。

对于我设置的交易:

public function owner() {
return $this->morphTo();
}

对于司机和客户:

public function transactions() {
return $this->morphMany(Transaction::class, 'owner');
}

但每个驱动程序也属于一个公司。我正在尝试通过 hasManyThrough 关系获取属于 Company 的所有交易:

public function transactions() {
return $this->hasManyThrough(Transaction::class, Driver::class);
}

但它似乎不适用于多态关系,因为它尝试在 transactions 表中查找 driver_id 字段而引发错误。

通过驱动程序获取属于公司的所有交易的方法是什么?

最佳答案

指定自定义外键并为 owner_type 列添加约束:

public function transactions() {
return $this->hasManyThrough(Transaction::class, Driver::class, null, 'owner_id')
->where('owner_type', Driver::class);
}

如果没有约束,您将获得具有相同 id 的不同所有者的交易。

关于Laravel hasMany通过多态关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53076515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com