我应该使用哪种关系将模型与其自身一对一关联?

时间:2019-10-01 15:35:45

标签: laravel laravel-5 eloquent

我有一个product_product数据透视表,其中的产品可以多对多关联,但是我又有另一种关系,即一个产品只能有一个父级。

一个复合产品可以有许多普通产品,而一个普通产品可以有许多复合母体。 一个变体产品可以有很多普通产品,而一个普通产品只能有一个变体父级。

我应该拥有什么关系?

我正在使用laravel 5.7php 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实例而不是集合。

0 个答案:

没有答案