Laravel 更新不返回数据

时间:2021-07-14 05:27:23

标签: php laravel laravel-8

我的 Laravel 更新操作为 true 返回 dd($data)。但我希望它返回更新的数据。如何更改它以获得该输出?我有一个条件,应该直接在模型上调用更新。有什么建议吗?

$data = FileLogs::find($id)->update([
            'orderId' => $request->orderId, 
            'fileId' => $request->fileId, 
            'status' => $request->status
]);

4 个答案:

答案 0 :(得分:2)

试试这个

 $data = tap(FileLogs::find($id))
    ->update(['orderId' => $request->orderId, 'fileId' => $request->fileId, 'status' => $request->status])
    ->first();
 dd($data);

答案 1 :(得分:0)

首先更新数据,然后再次获取数据

$data=FileLogs::find($id)->update(['orderId'=>$request->orderId,'fileId'=>$request->fileId,'status'=>$request->status]);

$updated_data=FileLogs::find($id);

dd($updated_data);

答案 2 :(得分:0)

先找到数据,然后再更新,得到这样的

$data = FileLogs::find($id);

现在像这样更新

$data->update(['orderId'=>$request->orderId,'fileId'=>$request->fileId,'status'=>$request->status]);

现在你可以对数据做任何事情

dd($data);

答案 3 :(得分:0)

这不是它的工作原理。你不能指望这个查询会返回一个对象:

$data = FileLogs::find($id)->update([
        'orderId' => $request->orderId, 
        'fileId' => $request->fileId, 
        'status' => $request->status
]);

如果您只想按照问题中提到的方式使用查询生成器,则需要手动获取一个对象:

$data = FileLogs::where('id', $id)->first();

通过 Eloquent,您可以使用 updateOrCreate():

$data = FileLogs::where('id', $id)->updateOrCreate([
        'orderId' => $request->orderId, 
        'fileId' => $request->fileId, 
        'status' => $request->status
]);

这将返回一个对象。 update() 将返回布尔值,因此您不能在此处使用它。