2014-09-19 51 views
0

我想鏈接一個HABTM模型與連接,但我沒有從連接表中獲取任何記錄。
我有導師id = 2的數據,我也有這個id在教師的其他表中的主題,也是這個主題的關鍵。我不應該在其他表中獲得NULL。我沒有得到一個錯誤。HABTM加入沒有產生任何結果從相關陣列在cakephp

我希望導師id = 2的所有科目。

這裏是控制器和模型的關係

array(
    (int) 0 => array(
     'Subject' => array(
      'id' => null, 
      'name' => null 
     ), 
     'TutorsSubject' => array(
      'id' => null, 
      'tutor_id' => null, 
      'subject_id' => null 
     ), 
     'Tutor' => array(
      'id' => '2', 
      'tutor_inactive' => false, 
      'first_name' => 'fred2', 
      'last_name' => 'blah',.......... 

    class TutorsController extends AppController { 

    public function tutordetails() { 
       $options2['joins'] = array(
        array('table' => 'tutors_subjects', 
        'alias' => 'TutorsSubject', 
        'type' => 'LEFT', 
        'conditions' => array(
        'Tutor.id = TutorsSubject.tutor_id', //fixed 'Tutor.id = TutorsSubject.id', // 
        ) 
        ), 

        array('table' => 'subjects', 
        'alias' => 'Subject', 
        'type' => 'LEFT', 
        'conditions' => array(
        'TutorsSubject.subject_id=Subject.id', 
        ) 
        ) 

       )); 

       $options2['fields'] = array('Subject.*','TutorsSubject.*','Tutor.*'); 

       $this->Tutor->recursive = -1; 
       $options2['conditions'] = array('Tutor.id' => 2); 
       $subject=$this->Tutor->find('all',$options2); 
       $this->set('subject', $subject); 
       debug($subject); 


    class Subject extends AppModel { 
    public $hasAndBelongsToMany = array(

     'Tutor' => array(
      'className' => 'Tutor', 
      'joinTable' => 'tutors_subjects', 
      'foreignKey' => 'subject_id', 
      'associationForeignKey' => 'tutor_id', 
      'unique' => 'keepExisting', 
      'conditions' => '', 

     ) 
    ); 

} 

    class Tutor extends AppModel { 
     .. 

     public $hasAndBelongsToMany = array(
      'Subject' => array(
       'className' => 'Subject', 
       'joinTable' => 'tutors_subjects', 
       'foreignKey' => 'tutor_id', 
       'associationForeignKey' => 'subject_id', 
       'unique' => 'keepExisting', 
       'conditions' => '', 

      ), 

     ); 

UPDATE=AgRIZZO solved it and changed made above 
+0

你已經使用了'$ this-> Tutor-> recursive = -1;'來防止從相關模型中獲取記錄。 – 2014-09-19 04:23:41

+0

在這裏找到詳細信息http://book.cakephp.org/2.0/en/models/model-attributes.html#recursive – 2014-09-19 04:27:35

+0

沒有沒有解決這個問題!因爲我沒有得到不同的遞歸值的記錄。是的,我知道的遞歸參數,並且不管我遞歸如何遞歸,我都沒有得到分類記錄。我已經閱讀了文檔。 – ajt 2014-09-19 05:22:37

回答

0

Agrizzo有了答案使用連接時,你是否已經正確定義的模型關係是巨大的錯誤。使用框架定義它的功能(並且您需要在沒有JOIN的情況下得到很好的支持)。這就是說 - 你的問題很可能是這樣的:'

Tutor.id = TutorsSubject.id'在你的第一個JOIN定義。試試

 'Tutor.id = TutorsSubject.tutor_id