Laravel hasManyThrough 一个多态关系
Laravel hasManyThrough a polymorphic relation
我有一个 table 交易,其中每个 Transaction
属于一个 Driver
或一个 Customer
- 所以我在它们之间设置了多态关系。
我为交易设置:
public function owner() {
return $this->morphTo();
}
对于 Driver 和客户:
public function transactions() {
return $this->morphMany(Transaction::class, 'owner');
}
但是每个driver也属于一个Company
。我正在尝试通过 hasManyThrough
关系获取属于 Company
的所有交易:
public function transactions() {
return $this->hasManyThrough(Transaction::class, Driver::class);
}
但它似乎不适用于多态关系,因为它会抛出错误,因为它试图在 transactions
table.[=22= 处寻找 driver_id
字段]
通过 drivers 获取属于公司的所有交易的方法是什么?
指定自定义外键并为 owner_type
列添加约束:
public function transactions() {
return $this->hasManyThrough(Transaction::class, Driver::class, null, 'owner_id')
->where('owner_type', Driver::class);
}
如果没有约束,您将获得具有相同 id
.
的不同所有者的交易
我有一个 table 交易,其中每个 Transaction
属于一个 Driver
或一个 Customer
- 所以我在它们之间设置了多态关系。
我为交易设置:
public function owner() {
return $this->morphTo();
}
对于 Driver 和客户:
public function transactions() {
return $this->morphMany(Transaction::class, 'owner');
}
但是每个driver也属于一个Company
。我正在尝试通过 hasManyThrough
关系获取属于 Company
的所有交易:
public function transactions() {
return $this->hasManyThrough(Transaction::class, Driver::class);
}
但它似乎不适用于多态关系,因为它会抛出错误,因为它试图在 transactions
table.[=22= 处寻找 driver_id
字段]
通过 drivers 获取属于公司的所有交易的方法是什么?
指定自定义外键并为 owner_type
列添加约束:
public function transactions() {
return $this->hasManyThrough(Transaction::class, Driver::class, null, 'owner_id')
->where('owner_type', Driver::class);
}
如果没有约束,您将获得具有相同 id
.