2014-09-20 2 views
0

У меня есть следующий фрагмент кода, но проблема в том, что я пытаюсь добавить несколько элементов. он добавляется, но он отображает ранее добавленную строку, например: - в следующем фрагменте кода будет только одна запись для идентификатора 150, и эта запись будет 13. Не могли бы вы рассказать мне, в чем проблема.Записи Kohana/PHP заменяются, если они выполняются внутри цикла

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(); 


    } 
    } 

} 

ответ

1

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

Пример:

foreach($userskills as $skill) 
{ 
    $UserSkillsObj = ORM::factory('userskill'); 
    $UserSkillsObj->user_id = $id; 
    $UserSkillsObj->skills_id = $skill; 
    $ids = $UserSkillsObj->save(); 
} 
Смежные вопросы