Student
有多对多Course
,而View/Students/Edit.ctp
我有以下表单,为当前学生的每个现有课程提供单独的课程下拉。如何访问迭代器限制的适用计数?
<?php
echo $this->Form->create('Student');
for($i = 0; $i < $whats_the_count; $i++) {
echo $this->Form->input('StudentCourse.' . $i . '.course_id');
}
?>
答案 0 :(得分:0)
完全未记录的方法$this->Form->value()
返回给定字段的ID数组,因此您只需使用count($this->Form->value($fieldName))
,即
<?php
echo $this->Form->create('Student');
for($i = 0; $i < count($this->form->value('StudentCourse')); $i++) {
echo $this->Form->input('StudentCourse.' . $i . '.course_id');
}
?>
答案 1 :(得分:-1)
你能不能简单地做一些事情:
$numCourses = count($student->StudentCourse);
答案 2 :(得分:-1)
如果他们有多对多,你需要第三张表来连接他们。 但首先要尝试适当地命名事物,这样你就不会感到困惑。
例如
学生= 1名学生
学生= 2名或更多学生
课程= 1门课程
课程= 2或更多课程
所以回答这个问题。您应该有一个名为students_courses的表,它将使用多对多关系连接两个表。因此,当您查询学生(只有一个)并且如果您编写学生 - >课程时,它将为您提供该学生的课程。
一步一步简单...... 1.找到一个学生的例子JOHN。
$student = $this->Students->find()
->contain('Courses')
->where(['name' => 'JOHN'])
->first();
$student
传递给edit.ctp
视图count($student->courses)
,如果您执行上述步骤,则应立即使用。{/ li>
醇>
更简单的方法是找到Courses
本身并使用->find('list')
,它会为您提供自动格式化的下拉选项。你可以在书中看到它。只是google cakephp查找列表。
希望这有帮助!祝你好运