gpt4 book ai didi

laravel - 是否有可能拥有比两个级别更深的 HasManyThrough 关系?

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

我有以下型号:

Product
BaseProduct
BaseCode
Series

它们中的每一个都是一个独立的实体,但它们是相关的。
Product有一个指向 BaseProduct 的外键, BaseProduct有一个指向 BaseCode 的外键和 BaseCode有一个指向 Series 的外键.

我在 BaseCode 中指定了一个方法模型,所以我可以选择所有 Products与该特定相关的 BaseCode :

public function Products()
{
return $this->hasManyThrough('Product', 'BaseProduct', 'BaseCodeId', 'BaseProductId');
}
BaseCodeIdBaseCode的PK和 FK 在 BaseProduct指向那个PK,和 BaseProductIdBaseProduct的PK ,并在 Product表,有一个 FK 指向它。

这一切都很好,对我来说只是花花公子。

不过,我想更进一步,并在我的 Series 中定义如下内容模型:

public function Products()
{
//It's here that I'd have no idea what to do - is there something like a three-level deep "hasManyThroughThrough" or something?
return $this->BaseProducts()-> /* and then whatever I'd do here to get the products */
}

public function BaseProducts()
{
return $this->hasManyThrough('BaseProduct', 'BaseCode', 'SeriesId', 'BaseCodeId');
}

我如何获得所有 Product s 与 Series 相关联像那样?

最佳答案

我对 4.1 有点陌生,但看起来好像 hasManyThrough()不是为您正在寻找的关系类型而设计的,它实际上只是两级深度急切加载的快捷方式。

尝试使用传统的急切加载...
$data = Product::with('BaseProduct.BaseCode.Series');
您需要确保根据需要在模型中设置关系,而不是调用模型名称,您需要调用定义关系的方法。

同样显然,通过使用 protected $primaryKey = 'SeriesID' 确保您的模型知道主键是什么。等等...

关于laravel - 是否有可能拥有比两个级别更深的 HasManyThrough 关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21594290/

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