gpt4 book ai didi

php - 创建动态 Laravel 访问器

转载 作者:可可西里 更新时间:2023-11-01 13:59:29 25 4
gpt4 key购买 nike

我有一个 Product 模型和一个 Attribute 模型。 ProductAttribute 之间的关系是多对多的。在我的 Product 模型上,我试图创建一个动态访问器。我熟悉 Laravel 的访问器和修改器功能,如文档所述 here .我遇到的问题是我不想在每次创建产品属性时都创建访问器。

例如,一个产品可能有一个颜色属性,可以这样设置:

/**
* 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->尺寸

有没有一种方法可以设置一个“动态”访问器来处理我作为属性访问时的所有属性?

我是否需要用我自己的访问器功能覆盖 Laravel 的访问器功能?

最佳答案

是的,您可以将自己的逻辑片段添加到 Eloquent Model 类的 getAttribute() 函数中(在您的模型中覆盖它),但在我看来,这不是一个好的做法。

也许你可以有一个功能:

public function getProductAttr($name)
{
foreach ($this->productAttributes as $attribute) {
if ($attribute->code === $name) {
return $attribute->pivot->value;
}
}

return null;
}

然后这样调用它:

$model->getProductAttr('color');

关于php - 创建动态 Laravel 访问器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47439110/

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