2011-02-09 7 views
0

私はCIとDatamapperで全く新しいです。私は非常に簡単なことをしたいと思います。Datamapper:関係に複数の値を保存

私は、このモデルに

学生

 <?php 
      class Student extends DataMapper { 
      var $has_many = array('course'); 
      } 

コース

 <?php 
      class Course extends DataMapper { 
      var $has_many = array('student'); 
     } 

や学生を追加するには、このコントローラーを使用している3つのテーブル

courses 
students 
students_courses 

を使用してデータベースを持っていますと

彼らのコースを選択し

学生コントローラ

  function add(){ 

      $estudiante = new Student(); 
      $estudiante->name = $this->input->post('nombre'); 
      $estudiante->save(); 

      $user = new Student(); 
      $curso = new Course(); 


      $user->get_by_name($estudiante->name); 
      $curso->get_by_name($this->input->post('curso')); 

      $user->save($curso); 

      $this->load->view('student/confirm'); 

      } 

と、ビューの最後に、このフォーム

<p> 
     <label for="nombre">Nombre:</label> 
     <input type="text" name="nombre" id="nombre"> 
    </p> 

    <p> 
     <label for="nombre">Curso:</label> 
     <select multiple name="curso" id="curso"> 
      <?php 

      foreach($course_list as $item) { 

      echo "<option value='$item->name'>" . "$item->name" . "</option>"; 
      } 

      ?> 
     </select> 
    </p> 

    <input type="submit" value="submit"> 


<?php echo form_close(); ?> 

すべて私が選択リストから一つの値を保存したいとき.but ...素晴らしい作品1つ以上の値を保存するにはどうすればよいですか?

ありがとうございました!

答えて

2

あなたの問題は、データベースモデリングに関連する可能性があると思います。 StudentCourseの間に多対多の関係を指定する必要があります。

また、生徒が持つ可能性のあるすべてのコースを取得するには、$this->input->post('curso')を反復する必要があります。このような何か:

foreach ($this->input->post('curso') as $entry) 
{ 
    $curso = new Course(); 
    $curso->get_by_name($entry); 
    $user->save($curso); 
} 

私はDataMapperの経験を持っていないが、私はあなたの問題はこの方法で解決することができます:)

考えます
関連する問題