所以我试图让我的修改器和访问器在 Laravel 9 中工作,在我的
Tag
模型中我有以下内容:
protected function name(): Attribute
{
return Attribute::make(
get: fn ($value) => strtolower($value),
set: fn ($value) => strtolower($value),
);
}
然而,当在我的刀片视图中显示名称时,名称不会以小写形式显示 (
{{ $tag->name }}
),在将新模型保存到数据库时也不会。
以下确实有效:
public function getNameAttribute($value)
{
return strtolower($value);
}
同样在使用
public
时它不起作用:
public function name(): Attribute
只是想了解我在这里做错了什么?
我正在使用 Laravel 版本 9.44
不知道问题的内容是不是你的代码。我有一个类似的问题,get 和 set 不工作。但它适用于其他模型文件。
我又一次找到了解决方案,是的,又一次。
如果属性(列名)有两个词,你必须把它放在一起,第一个词要小写。
简称
protected function shortName(): Attribute
{
return Attribute::make(
get: fn ($value) => strtolower($value),
set: fn ($value) => strtolower($value),
);
}
在页面顶部注入类,如下所示
使用 Illuminate\Database\Eloquent\Casts\Attribute;