【问题标题】:Laravel update not returning dataLaravel 更新不返回数据
【发布时间】:2021-09-23 02:28:52
【问题描述】:

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

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

【问题讨论】:

  • update() 会返回boolean,所以这里不能使用。更新数据后可以再次查询$data=FileLogs::find($id)
  • 尝试 updateOrCreate 而不是更新 $data=FileLogs::find($id)->updateOrCreate (['orderId'=>$request->orderId,'fileId'=>$request->fileId,'status'=>$request->status]);

标签: php laravel laravel-8


【解决方案1】:

试试这个

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

【讨论】:

  • 在末尾不使用->first() 会返回更新后的数据。
  • @MG 如果它解决了您的问题,您可能会接受答案,以便其他用户可以参考此答案寻求帮助。
【解决方案2】:

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

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

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

dd($updated_data);

【讨论】:

    【解决方案3】:

    先找到数据,然后你可以更新它,这样得到它

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

    现在这样更新

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

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

    dd($data);
    

    【讨论】:

      【解决方案4】:

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

      $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() 将返回布尔值,所以你不能在这里使用它。

      【讨论】:

      • 我无法使用此方法,即使它返回数据,因为这不会调用我拥有的updated 事件
      • 您可以按照@dhairya-lakhera 的回答使用tap
      猜你喜欢
      • 2019-06-14
      • 1970-01-01
      • 2022-11-18
      • 2020-05-23
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      • 2016-03-23
      • 2021-04-14
      相关资源
      最近更新 更多