我是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(); ?>
当我想从选择列表中保存一个值时,一切都很有效...但是,我需要做些什么才能保存多个值?
谢谢!
答案 0 :(得分:2)
我认为您的问题可能与数据库建模有关。您需要在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的经验,但我认为您的问题可以通过这种方式解决:)