Обновить свойство index в коллекции данных идентификаторов. - PullRequest
0 голосов
/ 19 января 2020

Используя POST на моем внешнем интерфейсе (React. js, с react-beautiful-dnd), я пытаюсь обновить позицию элементов, сохраненных пользователем.

Моя стратегия состоит в том, чтобы отправить через обновленный индекс идентификаторов, которые упорядочены в указанной позиции.

Мои данные (пример, упрощенный)

┌────┬────────┬───────┐
│ id │ title  │ index │ <── my "position"
├────┼────────┼───────┤
│  1 │ Apple  │     4 │
│  2 │ Banana │     1 │
│  3 │ Mango  │     3 │
│  4 │ Kiwi   │     2 │
│  5 │ Orange │     0 │
└────┴────────┴───────┘

Массив новых позиций (анатомия)

$value: sorted ids ------> [3, 2, 5, 1, 4]
                            :  :  :  :  :
$key:   new index will be…  0, 1, 2, 3, 4

Код

Контроллер принимает массив, который получает новые позиции из ключей массива. Затем он перебирает коллекцию заданных идентификаторов и переназначает их обновленный индекс.

public function reorder(Request $request) {

    $newIndex = $request->newIndex;
    $items = Item::whereIn('id', $newIndex)->get();

    foreach ($newIndex as $key => $value) {
      // TODO: check if $item->index needs to be rewritten at all
      $item = $items->find($value);
      $item->index = $key;
      $item->save();
    }

    return response('Success', 200);
}

dd() из $request->input

array:1 [
  "newIndex" => array:5 [
    0 => 4
    1 => 1
    2 => 2
    3 => 5
    4 => 3
  ]
]

Проблема

Кажется ... код работает только один раз? Я что-то пропустил? POST срабатывает каждый раз, и массив set является точным, поэтому проблема не в внешней части.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...