为什么字段没有更新?

Why field is not updated?

我有如下查询功能:

    $user = User::findOrFail($id)->first();

    if($user->status == 1) {
        $status = 0;
    } else {
        $status = 1;
    }

    User::where("id", $id)->update(["status" => $status]);

当我看到数据库 table 时,一个字段 status 没有更新为 1

提交的状态有描述:

status         | int(11)          | NO   |     | 1  

您可以这样做来切换布尔值 属性:

$user = User::findOrFail($id);
$user->status = !$user->status;
$user->save();

或者:

$user = User::findOrFail($id);
$user->status = $user->status === 1 ? 0 : 1;
$user->save();

为什么不保存实例化用户对象的状态?

您可以这样做:

  $user = User::findOrFail($id)->first();

if($user->status == 1) {
    $status = 0;
} else {
    $status = 1;
}

$user->update(["status" => $status]);