Вложенный foreach для удаления и повторной вставки только вставки последнего элемента - PullRequest
0 голосов
/ 03 июля 2018

Итак, у меня есть массив пользователей, и у каждого пользователя есть свой идентификатор и список игр. Я храню его в своей базе данных как пары userID и gameID.

Каждый раз, когда я собираюсь изменить игры для каждого пользователя, мне нужно стереть старые, а затем вставить новые, поэтому я сделал это:

        foreach($users as $user) {
            $where['id_user'] = $user->id;
            $this->tableUsersGames->delete($where);
            foreach($user->games as $game){
                $data['id_user'] = $user->id;
                $data['id_game'] = $game->id;
                $this->tableUsersGames->insert($data);
            }
        }

Но он вставляет только последнего пользователя / игры в список. Я решил вместо этого иметь два цикла foreach, один для удаления данных, а затем еще один для вставки, так что теперь он работает нормально.

Я хотел бы знать, почему это не сработало? Я даже добавил туда эхо, чтобы убедиться, что он работает в правильном порядке, и это было так.

ОК, редактирование для уточнения.

Переменная $ users выглядит следующим образом:

[
 {id: 1, games: [
   {id: 3, name: 'xyz'},
   {id: 5, name: 'xyz'}
  ]
 },
 {id: 2, games: [
   {id: 2, name: 'xyz'},
   {id: 9, name: 'xyz'}
  ]
 }
]

И фреймворк делает именно то, что вы ожидаете, никакой фиксации не требуется.

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