我有一个表单,用户可以在其中编辑,创建或删除送货方式。 用户发送表单并更新数据。
我希望在用户编辑后返回用户的送货方式。 但我似乎得到了旧数据,而不是更新的数据。
$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());
为什么我不能获得新的结果,而是在更新之前获得结果?它是否使用了第3行的第一个$user->shipping_methods
的结果?我应该刷新"以某种方式查询?
答案 0 :(得分:1)
你必须重新加载这段关系:
return response()->json($user->load('shipping_methods')->shipping_methods->toArray());
您还可以简化整行:
return $user->load('shipping_methods')->shipping_methods;
答案 1 :(得分:0)
saveMany
的{{1}}方法返回\Illuminate\Database\Eloquent\Relations\HasMany
的实例,您必须手动设置关系
\Illuminate\Database\Eloquent\Collection