【发布时间】:2014-10-19 03:06:05
【问题描述】:
我有两个模型:Users 和 Lessons
-
User有一个Teacher -
User拥有并属于许多Students
Teachers 和 Students 都是 Users
在我的Users 模型中,我有这个关联:
public $hasMany = array(
'Lesson' => array(
'className' => 'Lesson',
'foreignKey' => 'user_id',
'dependent' => false,
)
);
在我的Lessons 模型中,我目前有这个关联:
public $belongsTo = array(
'Teacher' => array(
'className' => 'User',
'foreignKey' => 'teacher_id',
'conditions' => array('Teacher.group_id' => '2'),
'fields' => '',
'order' => ''
)
);
我的问题是:
-
为什么
$teachers = $this->Lesson->Teacher->find('list');会返回所有users而不仅仅是teachers?为什么模型的belongsTo部分中设置的条件不过滤结果以仅显示Users和group_id为2 即Teachers?如果这不是它应该工作的方式,那么在这里设置条件的意义何在?到目前为止,我每次都必须将其包含在 find 中,这似乎有点多余:
$teachers = $this->Lesson->Teacher->find('list', array('conditions'=>array('Teacher.group_id'=>'2'))) -
如何编写
Students的关联,以便Lessons有很多学生?以及如何为其设置数据库?
【问题讨论】:
-
关于您问题的数据库部分:您需要分享您当前的表 (用户、教师、学生、课程、users_teachers 等) 和 (至少) 那些表的主键和外键。您的问题令人困惑,因为由于使用了 Cakephp 术语,“用户有一位老师”这句话暗示了 2 个表格。但是,您在 Lesson 模型中的 belongsTo 关系将 Teachers 描述为 User 表的子集。
标签: cakephp cakephp-2.5