首页 > 解决方案 > Eloquent - 编辑表格行并返回新结果数据 - 检索旧数据

问题描述

我有一个表单,用户可以在其中编辑、创建或删除运输方式。用户发送表单并更新数据。

我想在编辑后返回用户的运输方式。但我似乎取回了旧数据,而不是更新的数据。

$user = \App\User::where('user_id', $user->id)->first();

$user->shipping_methods->each(function($method) {
    $method->delete();
});
$methods = [];
foreach ($request->input('methods') as $method) {
    $methods[] = new \App\ShippingMethod($method);
}

$user->shipping_methods()->saveMany($methods);

return response()->json($user->shipping_methods->toArray());

(目前代码只是删除了旧的运输方式并用新的方式替换它们)。我正在使用雄辩的关系来获取运输方式。

所以当我这样做时:

return response()->json($user->shipping_methods->toArray());

为什么我没有得到新的结果,而是得到了更新前的结果?是否使用第$user->shipping_methods3 行的第一个结果?我应该以某种方式“刷新”查询吗?

标签: laravel-5eloquent

解决方案


您必须重新加载关系:

return response()->json($user->load('shipping_methods')->shipping_methods->toArray());

您还可以简化整行:

return $user->load('shipping_methods')->shipping_methods;

推荐阅读