gpt4 book ai didi

laravel - 修改 Eloquent 模型的自定义属性

转载 作者:行者123 更新时间:2023-12-02 17:19:47 25 4
gpt4 key购买 nike

我有一个包含自定义属性的模型

class Test extends Model
{
protected $appends = ['counter'];
public function getCounterAttribute()
{
return 1;
}
}

我需要更改自定义属性的值,例如:

$tests = Test::all();
foreach ($tests AS $test) {
$test->counter = $test->counter + 100;
}

这行不通,哪个才是正确的做法?

最佳答案

问题是你的访问器总是返回 1

public function getCounterAttribute()
{
return 1;
}

您的循环正确设置了 counter 属性(可通过 $model->attributes['counter'] 检查)。但是,当您调用 $test->counter 时,它的值是通过 getCounterAttribute() 方法解析的,该方法始终返回 1。

将您的 getCounterAttribute() 更新为如下内容:

public function getCounterAttribute()
{
return isset($this->attributes['counter']) ? $this->attributes['counter'] : 1;
}

这样,您是在说:“如果设置了计数器属性,则返回它。否则,返回 1”。

关于laravel - 修改 Eloquent 模型的自定义属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43756564/

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