首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cakePHP HABTM find with conditions

cakePHP HABTM find with conditions
EN

Stack Overflow用户
提问于 2011-08-09 06:18:29
回答 3查看 7K关注 0票数 1

我设置了以下关系:

老师:

代码语言:javascript
复制
    var $hasAndBelongsToMany = array(
    'Classroom' => array(
        'className' => 'Classroom',
        'joinTable' => 'classrooms_teachers',
        'foreignKey' => 'teacher_id',
        'associationForeignKey' => 'classroom_id',
        'unique' => true,
    )
);

课堂:

代码语言:javascript
复制
    var $hasAndBelongsToMany = array(
    'Teacher' => array(
        'className' => 'Teacher',
        'joinTable' => 'classrooms_teachers',
        'foreignKey' => 'classroom_id',
        'associationForeignKey' => 'teacher_id',
        'unique' => true,
    )
);  

var $hasMany = array(
'Student' => array(
        'className' => 'Student',
        'foreignKey' => 'classroom_id',
        'dependent' => false,
    ),
);

学生:

代码语言:javascript
复制
    var $belongsTo = array(
    'Classroom' => array(
        'className' => 'Classroom',
        'foreignKey' => 'classroom_id',
    ),
  );

我正在尝试为教师创建一个仪表板,其中显示通过教室与教师关联的所有学生。

我正在使用以下find操作:

代码语言:javascript
复制
    $students = $this->Teacher->Classroom->find('all', array(
                                        'conditions' => array('Classroom.teacher_id' => $this->Access->getTeacherId()),
    ));

但是,我得到了一个错误:Unknown column 'Classroom.teacher_id' in 'where clause'

我一定是做错了什么,因为蛋糕没有做联想。

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-09 10:20:03

这不是最好的方法。只需使用containable和find('first'),您不需要查找全部:

$students =$this->教师->find(‘first’,array( 'conditions‘=>数组(’Teacher.id‘=> $this->Access->getTeacherId()),’=>‘教室’=>数组(‘学生’);

这将使您获得与教师相关的所有教室,以及这些教室中的所有学生。

票数 1
EN

Stack Overflow用户

发布于 2011-08-09 09:30:05

这是实现这一目标的正确方法:

代码语言:javascript
复制
        $this->Teacher->bindModel(array('hasOne' => array('ClassroomsTeachers')));

    $students = $this->Teacher->find('all', array(
                                        'conditions' => array('ClassroomsTeachers.teacher_id' => $this->Access->getTeacherId()),
                                        'recursive' => 2
    ));

我希望它能帮助一些人!

票数 3
EN

Stack Overflow用户

发布于 2013-03-10 06:55:45

我做了一个行为来解决HABTM问题。

在这里发布了我的答案:

HABTM Find with CakePHP 2.0

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6989293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档