在增幅器内部访问相关模型

时间:2018-07-26 11:30:25

标签: laravel eloquent

我对自己的问题有疑问,所以让我解释一下。

我有这些模型,分别是 Product ProductVariant ,ProductVariant与产品模型具有“属于”关系。而产品模型与产品模型具有“具有”关系 ProductVariant

我的问题是...

我确实为类似产品的产品创建了很多

Product->variant()->create($variantProducts);

并且我想在ProductVariant模型上创建一些变体,以操纵一个称为“ sku”的列。

我的问题是,如何从mutator中获取一些列值以从相关模型(Product)中获取数据,在这种情况下,我想从ProductVariant mutator中获取Product的category_id。

我尝试这样做,但是似乎不起作用

public function setSkuAttribut($v){
    // product() is belongsTo relation to the product model
    $cat = $this->product()->category_id;
    dd($cat);
}

但它会向我返回此错误

Undefined property: Illuminate\Database\Eloquent\Relations\BelongsTo::$category_id

任何帮助将不胜感激..谢谢:)

1 个答案:

答案 0 :(得分:0)

您正在将product()关系方法作为方法来调用,这意味着您将收到一个Builder实例。为了获得模型实例,您将不得不执行->product()->get()->category_id,这将在每种情况下进行一次新查询,或者使用带有->product->category_id的延迟加载,这将使用已经加载的关系实例。如果有的话。