Datamapper: сохранить более одного значения в отношении - PullRequest
0 голосов
/ 09 февраля 2011

Я совершенно новый в CI и Datamapper, и я хочу сделать очень простую вещь, я думаю.

У меня есть база данных с 3 таблицами

 courses
 students
 students_courses 

Я используюЭто модели

Студент

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

Курсы

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

И этот контроллер для добавления студентов и выбора их курсов

Контроллер студентов

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

Все прекрасно работает, когда я хочу сохранить ОДНО значение из списка выбора ..., но что мне нужно сделать, чтобы сохранить БОЛЕЕ чемодно значение?

Спасибо !!!

1 Ответ

2 голосов
/ 09 февраля 2011

Я думаю, что ваша проблема может быть связана с моделированием базы данных.Вам необходимо указать отношение «многие ко многим» между Student и Course.

Кроме того, вам нужно выполнить итерацию по $this->input->post('curso'), чтобы получить все курсы, которые может иметь студент.Примерно так:

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

У меня нет опыта работы с DataMapper, но я думаю, что ваша проблема может быть решена следующим образом:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...