codeigniter - 使用 Codeigniter 和 Datamapper 进行基本 CRUD 操作

标签 codeigniter codeigniter-datamapper

我对 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/

相关文章:

php - 在 CodeIgniter DataMapper ORM 多对一关系中使用别名字段

php - 从一个表中获取所有列的值并从第二个表中获取其他列的值

php - 在jquery token字段中获取重复值,如何避免这些重复值

php - 如何在 Azure 上托管 Codeigniter 应用程序?

php - 检查一天字段中两个日期之间的可用性

php - codeigniter 和 DataMapper。不同服务器上的关系表如何?

php - 使用 CI DataMapper ORM 连接不同数据库中的表

Codeigniter Datamapper另存为新ID

php - 使用 mysql 和 ajax 用 FLOT 绘制图形

PHP CodeIgniter Foreach 返回不正确的数据