Записи Kohana / PHP заменяются, если они запускаются внутри цикла

У меня есть следующий фрагмент в моем коде, но проблема в том, когда я пытаюсь добавить несколько элементов. он добавляется, но он пересылает ранее добавленную строку, например: — в следующем фрагменте кода будет только одна запись для идентификатора 150, и эта запись будет 13. Скажите, пожалуйста, в чем проблема.

    public function StoreSkills($skills,$id) {
$skills = "16,13";
$id = "150";
if(!empty($skills)){
$UserSkillsObj = ORM::factory('userskill');
$userskills = explode(',',$skills);
foreach($userskills as $skill)
{
//   $UserSkillsObj = ORM::factory('userskill'); if this statement is here,
//records are getting added just fine.
$UserSkillsObj->user_id = $id;
$UserSkillsObj->skills_id = $skill;
$ids = $UserSkillsObj->save();}
}

}

0

Решение

Переместите линию, которая создает объект, в цикл foreach. Наличие его снаружи означает, что вы всегда ссылаетесь на один и тот же объект, поэтому последний (второй) цикл сохраняет над первым, делая его всегда 13.

Пример:

foreach($userskills as $skill)
{
$UserSkillsObj = ORM::factory('userskill');
$UserSkillsObj->user_id = $id;
$UserSkillsObj->skills_id = $skill;
$ids = $UserSkillsObj->save();
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]