Итак, у меня есть массив пользователей, и у каждого пользователя есть свой идентификатор и список игр. Я храню его в своей базе данных как пары 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'}
]
}
]
И фреймворк делает именно то, что вы ожидаете, никакой фиксации не требуется.