我有一个product_product数据透视表,其中的产品可以多对多关联,但是我又有另一种关系,即一个产品只能有一个父级。
一个复合产品可以有许多普通产品,而一个普通产品可以有许多复合母体。 一个变体产品可以有很多普通产品,而一个普通产品只能有一个变体父级。
我应该拥有什么关系?
我正在使用laravel 5.7
和php 7.2
,我有一个带有products
的{{1}}表和一个带有{{1} },id
(儿子)和product_product
(父亲)
id
此刻,product_id
关系向我返回了parent_product_id
数据透视表的实例。
class Product {
public function variantParent()
{
return $this->hasOne(ProductProduct::class, 'product_id')->where('qty', '=', 0);
}
public function variantsChildren()
{
return $this->belongsToMany(self::class, 'product_product', 'parent_product_id', 'product_id')
->withPivot('qty')->where('qty', '=', 0);
}
public function compoundParents()
{
return $this->belongsToMany(self::class, 'product_product', 'product_id', 'parent_product_id')
->withPivot('qty');
}
public function compoundChildren()
{
return $this->belongsToMany(self::class, 'product_product', 'parent_product_id', 'product_id')
->withPivot('qty');
}
}
关系返回variantParent
的集合(可以)。
我需要ProductProduct
关系来返回variantsChildren
实例而不是集合。