2015-04-06 91 views
1

我有3個表
學生(ID,姓名)
科目CakePHP的關聯表的關係

students表相關subjectsmany to many關係(ID,主題)
student_subjects(ID,student_id數據,subject_id)使用student_subjects

學生模型

public $hasMany = array(
    'studentsSubject' => array(
     'className' => 'studentsSubject', 
     'foreignKey' => 'students_id', 
    )); 

students_subjects模型

public $belongsTo = array(
    'Student' => array(
     'className' => 'Student', 
     'foreignKey' => 'students_id', 
    )); 

當我查詢

$students = $this->Student->find('all'); 
debug($students);exit(); 

返回這樣

array(
'Student' => array(
    'id' => '1', 
    'name' => 'smith', 
), 
'StudentSubject' => array(
    0=>array(
     'id' => '1', 
     'student_id'=>'1', 
     'subject_id'=>'1' 
     ), 
     1=>array(
     'id' => '2', 
     'student_id'=>'1', 
     'subject_id'=>'2' 
     ), 
    ) 
) 

,而我想有主題的名稱,而不是subjectID如下 我知道我可以做find的變化有要求的結果
但我的意思是,我是牛逼可能像鏈接students表,而不是 'student_subjects'

array(
'Student' => array(
    'id' => '1', 
    'name' => 'smith', 
), 
'Subject' => array(
    0=>array(
     'id' => '1', 
     'subject'=>'maths', 
     ), 
     1=>array(
     'id' => '2', 
     'subject'=>'computer', 
     ), 
    ) 
) 
+1

閱讀關於[HABTM model association](http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#hasandbelongstomany-habtm) – AgRizzo 2015-04-06 11:39:52

回答

0

變化模型類名

Class Subject extends App_Model{ 

    public $useTable = 'student_subjects'; 

    } 
+0

這不是_cake way_ to做到這一點 – 2015-04-06 11:58:03

1

對於這個 '主體',你應該使用HABTM assosiation。按照您的定義,您只需要兩個模型和它們之間的HABTM關係。

class Student extends AppModel { 
public $hasAndBelongsToMany = array(
    'Subject' => 
     array(
      'className' => 'Subject', 
      'joinTable' => 'student_subjects', 
      'foreignKey' => 'student_id', 
      'associationForeignKey' => 'subject_id', 
      'unique' => true, 
      'conditions' => '', 
      'fields' => '', 
      'order' => '', 
      'limit' => '', 
      'offset' => '', 
      'finderQuery' => '', 
      'with' => '' 
     ) 
    ); 
} 

這樣,您可以通過學生模型訪問主體模型,而無需任何解決方法。

2

您在students_subjects模型中爲學生創建了belongsTo。這是不正確的。取而代之的是,你需要使SubjectTo成爲Subject。