首页 > 解决方案 > 在 int 上调用成员函数 save()

问题描述

使用 laravel eloquent 更新时,

查询已执行,但它没有成功响应,而是说call to a member function save() on int in file .... line 43

我的更新功能如下所示:

public function removebookingbyid(Request $request) {
    $toUpdateColumns = ['is_delete' => 1, 'updated_at' => Carbon::now()];
    $data = InstructorSchedule::where('id', $request->booking_id)
        ->update($toUpdateColumns);

    $res = $data->save();

    if ($res) {
        return response()->json(['status'=>1,'msg'=>'ok'], 200);
    } else {
        return response()->json(['status'=>0,'msg'=>'bad'], 500);
    }
}

我有一个和这个几乎一样的功能,不同的是我只有一列要更新,而且效果很好。但我不知道为什么这个给我这样的错误。

标签: laraveleloquent

解决方案


来自 Laravel 文档:https ://laravel.com/docs/8.x/eloquent#updates

通过 Eloquent 发布批量更新时,不会为更新的模型触发保存、保存、更新和更新模型事件。
这是因为在发布大规模更新时从未真正检索到模型。

也许这样的事情会起作用:

$res = InstructorSchedule::findOrFail($request->booking_id);
$res->fill($toUpdateColumns);
$res->save();

推荐阅读