Php Laravel更新数据库中的列表/排序顺序也在更新id
我在前端使用拖放,它调用一个Laravel(5.3)API来更新数据库。这工作正常,只是我注意到此方法也会更改该项目的Php Laravel更新数据库中的列表/排序顺序也在更新id,php,laravel,sorting,drag-and-drop,eloquent,Php,Laravel,Sorting,Drag And Drop,Eloquent,我在前端使用拖放,它调用一个Laravel(5.3)API来更新数据库。这工作正常,只是我注意到此方法也会更改该项目的id。我的其他一些可排序模型使用多态关系,当我使用下面的代码时,多态关系会中断 public function sort(SocialMediaItemRequest $request) { $icons = Auth::user()->socialmediaicons; $icons->each(function ($icon, $index) u
id
。我的其他一些可排序模型使用多态关系,当我使用下面的代码时,多态关系会中断
public function sort(SocialMediaItemRequest $request)
{
$icons = Auth::user()->socialmediaicons;
$icons->each(function ($icon, $index) use ($request) {
$icon->update($request->icons[$index], ['list_order' => $icon->list_order]);
});
return fractal()->collection($icons, new SocialMediaIconsTransformer())->toArray();
}
我也试过了
$icons->each(function ($icon) use ($request) {
$icon->update(['order' => $request->order]);
});
但这也不行。我只想更改与
user\u id
相关的list\u顺序
字段这就行了。但我愿意接受其他建议:
public function sort(SocialMediaItemRequest $request)
{
foreach (($request->icons) as $icon => $id) {
SocialMediaIcon::where('id', $id)->update([
'list_order' => $icon + 1
]);
}
$icons = Auth::user()->socialmediaicons;
return fractal()->collection($icons, new SocialMediaIconsTransformer())->toArray();
}
我得到了一些帮助,这是我正在使用的最终解决方案:
public function sort(Request $request)
{
foreach ($request->icons as $icon) {
SocialMediaIcon::where('id', $icon['id'])->update(['list_order' => $icon['list_order']]);
}
return fractal()->collection(Auth::user()->socialmediaicons, new SocialMediaIconsTransformer())->toArray();
}