laravel-5 - 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_methods
3 行的第一个结果?我应该以某种方式“刷新”查询吗?
解决方案
您必须重新加载关系:
return response()->json($user->load('shipping_methods')->shipping_methods->toArray());
您还可以简化整行:
return $user->load('shipping_methods')->shipping_methods;
推荐阅读
- python - 用户删除机器人聊天时如何删除电报用户ID
- php - 如何将数组插入数组
- jobs - Rundeck 能否有一个作业将一部分执行为“分派到节点”,一部分执行为“本地执行”
- python - python中使用math.isclose比较字典,字典理解中如何实现
- orientdb - 如何解释orientjs查询结果?
- docker - 如何从容器中获取 docker 快照?
- vb.net - 在VB.Net解决方案中放置一个条件>等于<值
- c++ - 尝试在按下时消除此按钮的抖动
- hibernate - 谷歌云数据流:如何为每个工作人员(单例)只初始化一次 Hikari 连接池?
- amazon-web-services - AWS ECS:部署了多个容器,但只能发现端口 80 上的一个容器