【发布时间】:2020-08-02 18:07:09
【问题描述】:
我有一个产品模型,其中有一个attribute function,它返回某些数据。
通常如果我用Product::with(['attributes'])->active()->paginate(config('app.rec_limit')); 调用它,我会得到输出。
但如果我这样做,我将无法访问模型中的该数据或任何其他 function 数据,
protected $appends = ['product_attributes'];
public function getProductAttributesAttribute() {
return $this->attributes();
}
public function attributes() {
return $this->hasMany(ProductAttribute::class);
}
如果我在getProductAttributesAttribute function 中传递一个字符串,我会得到该字符串作为输出。
这里输出一个空数组的原因是什么?
【问题讨论】:
-
不需要使用accessor,可以通过
with方法获取属性。如果要使用访问器,则需要在getProductAttributesAttribute中返回$this->attributes;,但我不建议这样做。因为每次调用 Product 时,它都会进行预先加载。 -
你可以试试这个 return $this->attributes()->get();
标签: arrays laravel function eloquent model