Php Laravel更新数据库中的列表/排序顺序也在更新id

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

我在前端使用拖放,它调用一个Laravel(5.3)API来更新数据库。这工作正常,只是我注意到此方法也会更改该项目的
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();
}