Laravel обновляет список / порядок сортировки в базе данных, также обновляет идентификатор

Я использую перетаскивание на интерфейс, который вызывает API Laravel (5.3) для обновления базы данных. Это работает хорошо, за исключением того, что я заметил, что этот метод также изменяет 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,

0

Решение

Это работает. Но я открыт для других предложений:

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector