我对 Codeigniter 和 Datamapper 完全陌生,我有一个非常基本的问题,我自己在文档中搜索无法回答。
我有一个非常简单的数据库,包含 3 个表:
student
courses
student_courses
现在,我了解了关系如何运作,如何使用 CI 进行 CRUD 操作等......但是我如何使用必须由用户填写的表单来建立学生和类(class)之间的关系?
想象一下,我有一个表单,用户必须填写学生的姓名并选择两个或更多类(class)...... Controller 必须是什么样子?
非常感谢
最佳答案
首先,使用 Datamapper 和 CI,如果将“student”表命名为“students”会更容易。然后连接表“courses_students”(感谢Shauna)。您的模型将是“学生”和“类(class)”。
表单的 Controller 可能是这样的(理想情况下,您可以将表单放在 View 中):
function form() {
echo "<form method='post' action='submitForm'>";
echo "<input type='text' name='student_name'>";
echo "<select name='courses[]' multiple='multiple'>";
$c = new Course();
$c->get();
foreach($c as $course) {
echo "<option value='{$course->id}'>{$course->name}</option>";
}
echo "</select>";
echo "<input type='submit' value='Submit'>";
}
提交表单的 Controller (没有验证或 XSS 检查):
function submitForm() {
$s = new Student();
$s->name = $this->input->post('student_name');
// an initial save to the Students table, might be omitted
$s->save();
$course_array = $this->input->post('courses');
// loop through the Courses, get them from db, and save the relationship
foreach($course_array as $k=>$v) {
$c = new Course($v);
$s->save($c);
}
}
一些注意事项:这是一个快速、肮脏的例子。如果选择了很多类(class),那么进行多次保存可能会减慢速度,并且可能有一种方法使用 Datamapper 在一个语句中保存数组,但我需要对此进行研究。
关于codeigniter - 使用 Codeigniter 和 Datamapper 进行基本 CRUD 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4927097/