我有一个产品模型和一个属性模型,它们之间的关系是多对多。在我的产品模型中,我想创建一个动态访问器。我熟悉 Laravel 的访问器和修改器功能,如此处所述。但问题是,我不想每次创建产品属性时都创建一个访问器。
例如,一个产品可能有一个颜色属性,可以这样设置:
产品的颜色可以这样访问:
例如,一个产品可能有一个颜色属性,可以这样设置:
/**
* Get the product's color.
*
* @param string $value
* @return string
*/
public function getColorAttribute($value)
{
foreach ($this->productAttributes as $attribute) {
if ($attribute->code === 'color') {
return $attribute->pivot->value;
}
}
return null;
}
产品的颜色可以这样访问:
$product->color
。如果我要添加一个size
属性到产品中,我需要在Product
模型上设置另一个访问器,这样我就可以像这样访问它:$product->size
。
是否有一种方法可以设置单个“动态”访问器来处理所有属性的访问?
我需要覆盖Laravel的访问器功能吗?
public $with = ['attributes']
来预加载属性到Product
模型中? - WhyAyala