我无法从HABTM关系中的2个表中获取数据,我无法得到这些cakephp文档的答案(再次)。很抱歉询问有关应在文档中解释的问题。 这应该是一个简单的但我一直得到未定义的索引,我设置的关系似乎与文档一致。我有一篇关于更复杂问题的文章,但这个问题需要被隔离。
我不知道如何通过这个课程 - 学生HABTM表从课程表和学生表中获取相关数据。
我想要学生所做的所有课程。我希望学生表中的学生姓名和课程表中的课程详细信息,其中lesson_id作为此课程 - 学生表中的公共链接。听起来很简单,但我无法做到。
public $hasAndBelongsToMany = array(
'Student' => array(
'className' => 'Student',
'joinTable' => 'lessons_students',
'foreignKey' => 'lesson_id',
'associationForeignKey' => 'student_id',
'unique' => 'keepExisting',
)
);
class LessonsController extends AppController {
....
$this->Lesson->recursive = -1;
$options['joins'] = array(
array('table' => 'lessons_students',
'alias' => 'LessonsStudent',
'type' => 'LEFT',
'conditions' => array(
'Lesson.id = LessonsStudent.lesson_id',
)
),
array('table' => 'students',
'alias' => 'Student',
'type' => 'LEFT',
'conditions' => array(
'LessonsStudent.student_id=Student.id',
)
),
);
$options['conditions'] = array('Student.id' => 2);
// $Item->find('all', $options);
$student=$this->set( 'student',$this->Lesson->find('all', $options));
In the view I get the error undefined index Student
<?php
// debug($student);
foreach ($student as $item2):
echo '<td>'. $item2['Lesson']['id'].'</td>';
echo '<td>'. $item2['Student']['id'].'</td>';
http://stackoverflow.com/questions/17250215/cant-get-all-user-data-from-habtm-in-cakephp
http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#hasandbelongstomany-habtm
答案 0 :(得分:0)
如果要使用模型关联,则需要删除$this->Lesson->recursive = -1;
,因为它会禁用模型中定义的任何关联。而且你可以删除$options['joins']
。
如果您在Lesson
模型中定义了多个关联,并且不想获取所有关联,请使用unbindModel()或使用Containable behavior
$this->Lesson->Behaviors->load('Containable');
$this->Lesson->contain('Student');
如果您需要在许多操作中多次查找,最好在模型中启用Containable
class Lesson extends AppModel {
public $actsAs = array('Containable');
}
所以你可以避免$this->Lesson->Behaviors->load('Containable');
行;