Laravel 9 访问器和修改器 - 简单示例不起作用

问题描述 投票:0回答:2

所以我试图让我的修改器和访问器在 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

laravel-9 accessor mutators
2个回答
0
投票

不知道问题的内容是不是你的代码。我有一个类似的问题,get 和 set 不工作。但它适用于其他模型文件。

我又一次找到了解决方案,是的,又一次。

如果属性(列名)有两个词,你必须把它放在一起,第一个词要小写。

简称

protected function shortName(): Attribute
{
    return Attribute::make(
        get: fn ($value) => strtolower($value),
        set: fn ($value) => strtolower($value),
    );
}

-1
投票

在页面顶部注入类,如下所示

使用 Illuminate\Database\Eloquent\Casts\Attribute;

© www.soinside.com 2019 - 2024. All rights reserved.