我有兩個型號:Users
和Lessons
爲什麼模型關聯中的條件不會在CakePHP中過濾控制器中的查找結果?
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
?如果這不是它應該工作的方式,那麼在這裏設定條件的重點是什麼?截至目前我已經把它列入了尋找每一個似乎有點多餘時間:
$teachers = $this->Lesson->Teacher->find('list', array('conditions'=>array('Teacher.group_id'=>'2')))
- 我如何寫
Students
使Lessons
有很多學生的關聯?我該如何爲它設置數據庫?
關於您問題的數據庫部分:您需要分享您當前的表_(用戶,教師,學生,課程,users_teachers等)_是和_(至少)_這些表的主鍵和外鍵。由於使用Cakephp術語,您的問題令人困惑,因爲聲明「用戶有一位教師」意味着2個表格。但是,在課程模型中您的belongsTo關係將教師描述爲用戶表的子集。 – AgRizzo 2014-10-20 11:40:34