php Laravel更新不工作

xqk2d5yq  于 2023-11-16  发布在  PHP
关注(0)|答案(5)|浏览(159)

我有一个名为admins的表和一个名为Admin的模型。
当我尝试更新记录时,它每次都失败一个字段。

$admindetail = Admin::find($id);
$admindetail->fill(['is_delete'=>1])->save();

字符串
上面的代码没有更新数据库中的记录。is_delete的数据类型是tinyint。
如果我更新名称字段,它将使用相同的代码,如

$admindetail = Admin::find($id);
$admindetail->fill(['name'=>'abc'])->save();


你能告诉我为什么第一个代码不工作吗?

afdcj2ne

afdcj2ne1#

模型用于与表进行交互,因此您需要存储在数据库中的所有属性都需要在模型中定义,因为您的管理模型应该是这样的

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Admin extends Model
{
    protected $fillable = ['name', 'is_delete'];
}

字符串
您的Model代码中缺少is_delete

0kjbasz6

0kjbasz62#

你可以尝试下面的代码,而不是将值作为数组传递:

$admindetail = Admin::find($id);
if(!$admindetail)
{
  $admindetail->is_delete=1;
   $admindetail->save();
}

字符串

ymzxtsji

ymzxtsji3#

使用布尔类型,无整数1:$adminDetail->fill(['is_delete' => true])->save();
你可以使用as属性而不使用fill方法,也不需要在$fillable数组中接受is_delete

$adminDetail->is_delete = true;
$adminDetail->save();

字符串

bejyjqdl

bejyjqdl4#

你应该像这样检查模型中的可填充项:

protected $fillable = [
    'name',
    'is_delete'
];

字符串

zy1mlcev

zy1mlcev5#

更新对我也不起作用。然后我发现我调用了上面的事务,它不起作用,因为我在返回之前没有提交。

相关问题