Cakephp 3,在关联表上保存表单数据
试图建立一个关于如何使用带有额外数据的联接表的示例,我有以下设置:Cakephp 3,在关联表上保存表单数据,cakephp,jointable,cakephp-3.0,Cakephp,Jointable,Cakephp 3.0,试图建立一个关于如何使用带有额外数据的联接表的示例,我有以下设置: 表学生:id,姓名,[…] 表课程:id,标题,[…] 加入表课程学生:id,课程id,学生id,成绩,上课时间 两个基表的: class StudentsTable extends Table { public function initialize(array $config) { $this->belongsToMany('Courses', [ 'alias' => 'Cour
- 表
:学生
,id
,[…]姓名
- 表
:课程
,id
,[…]标题
- 加入表
:课程学生
,id
,课程id
,学生id
,成绩
上课时间
class StudentsTable extends Table {
public function initialize(array $config) {
$this->belongsToMany('Courses', [
'alias' => 'Courses',
'foreignKey' => 'student_id',
'targetForeignKey' => 'course_id',
'joinTable' => 'courses_students',
'through' => 'CoursesStudents',
]);
}
class CoursesTable extends Table {
public function initialize(array $config) {
$this->belongsToMany('Students', [
'alias' => 'Students',
'foreignKey' => 'course_id',
'targetForeignKey' => 'student_id',
'joinTable' => 'courses_students',
'through' => 'CoursesStudents',
]);
}
和关联表:
class CoursesStudentsTable extends Table {
public function initialize(array $config) {
$this->belongsTo('Courses', [
'alias' => 'Courses',
'foreignKey' => 'course_id'
]);
$this->belongsTo('Students', [
'alias' => 'Students',
'foreignKey' => 'student_id'
]);
}
表中有一些课程,我尝试添加和编辑学生记录。背景
[courses] => [_ids]
在中,学生记录在学生表和关联表中创建记录
保存学生记录时,应该如何形成post数据数组,以便能够在关联表中存储
成绩
和小时数
字段?假设您在课程表单中,您应该按照以下方式配置表单字段
echo $this->Form->create($courses);
echo $this->Form->input("Courses.id");
echo $this->Form->input("Courses.title");
echo $this->Form->input("Courses.courses_students.$i.grade");
echo $this->Form->input("Courses.courses_students.$i.hours_attended");
基本思想是表单应该完全遵循在控制器中检索数据时的格式
这将为您正确格式化数据
然后在控制器中,需要传递关联以修补实体
$courses = $this->Courses->patchEntity($this->request->data(), ['associations' => ['CoursesStudents']]);
这将在实体中合并关联的请求数据,以便保存它