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

时间:2017-05-05 17:30:41

标签: 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) 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]);
});

但这也不起作用。我想要的就是更改与list_order相关联的user_id字段。

1 个答案:

答案 0 :(得分:0)

我在Reddit上得到了一些帮助,这是我正在使用的最终解决方案:

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();
}