У меня есть следующий фрагмент в моем коде, но проблема в том, когда я пытаюсь добавить несколько элементов. он добавляется, но он пересылает ранее добавленную строку, например: — в следующем фрагменте кода будет только одна запись для идентификатора 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();}
}
}
Переместите линию, которая создает объект, в цикл foreach. Наличие его снаружи означает, что вы всегда ссылаетесь на один и тот же объект, поэтому последний (второй) цикл сохраняет над первым, делая его всегда 13.
Пример:
foreach($userskills as $skill)
{
$UserSkillsObj = ORM::factory('userskill');
$UserSkillsObj->user_id = $id;
$UserSkillsObj->skills_id = $skill;
$ids = $UserSkillsObj->save();
}
Других решений пока нет …