Php Can';t更新laravel模型可见属性

Php Can';t更新laravel模型可见属性,php,laravel,eloquent,Php,Laravel,Eloquent,我有一个简单的表单和函数来更新我的产品。由于这不是我需要更新产品的唯一地方,我决定将功能移到模型本身中,以便以后可以重用它: class Producto extends Model { public function update($vales){ $this -> disponible = $values['disponible']; $this -> tipo = $values['tipo']; $this ->

我有一个简单的表单和函数来更新我的产品。由于这不是我需要更新产品的唯一地方,我决定将功能移到模型本身中,以便以后可以重用它:

class Producto extends Model
{
    public function update($vales){

        $this -> disponible = $values['disponible'];
        $this -> tipo = $values['tipo'];
        $this -> marca = $values['marca'];
        $this -> visible = $values['visible'];
        $this -> upc = $values['upc'];

        $this -> save();

        return;
    }
}
使用$this更新模型是否正确?我对它进行了测试,它可以工作并更新所有内容,除了名为“可见”的专栏。我试图找出什么地方出了问题,但一切似乎都很好,而且看起来它只是不想更新那个特定的专栏

出于测试目的,我尝试将该行更改为:

$this -> visible = "some hardcoded value";
但它还是不起作用。。。我尝试使用以下方法从控制器更新模型:

$product -> visible = $values['visible'];

它可以按预期工作,但将该功能放入模型的目的是使其可重用。数据库里的一切看起来都很好,这让我抓狂。因此,我所看到的唯一问题是必须使用$this来更新模型,但我不确定这是否正确。

Larvel model在类上定义了名为hidden和visible的属性。

或者不要将该名称用作数据库中的表字段(考虑使用字段名
是否可见

使用此代码更新该字段

$this->setAttribute('visible',$values['visible']);
如果你有一个在适当的地方

它将具体更改属性(数组)
attributes
中的字段,其中包含从DB恢复的值

$this->attributes[$key] = $value;

您也可以使用最后一个,但它将绕过突变定义“不知何故不起作用”。发生了什么?您的代码是正确的-其他正在发生的事情,什么类型是可见的?您是否在Producto模型的可填充属性上添加了
visible
?嗯,“visible”的值在数据库中没有更新,它保持不变。与其他列一样,它是varchar,但这是唯一一个不更新的列!。我将完全相同的代码移动到控制器中,将引用模型的“$this”更改为“$product”,它可以工作,但当函数位于模型中时无法工作。是的,我尝试在fillable属性中添加visible,但没有帮助。我还尝试了受保护的$guarded=[];