2015-01-15 87 views
0

這是一個混亂的問題,因爲我試圖編寫一個使用兩個HABTM關係的蛋糕查找。CakePHP找到兩個HABTM關係

我有一個名爲projects的表,它與users表有HABTM關係。它使用中介表projects_users來處理HABTM關係。

然後用戶以前只與departments表具有belongsTo關係。 users表有一個名爲department_id的外鍵。但現在這種關係已經變成了HABTM;並且外鍵department_id被刪除,表department_users被創建。

所以老找說法,我正在改變,以前看這樣的:

$projectsUsers = $this->Project->ProjectsUser->find('all', array(
    'conditions' => array(
     'ProjectsUser.project_id' => 1, 
     'User.department_id' => 25 
    ), 
    'recursive' => 0, 
    'contain' => array(
     'User' => array(
      'fields' => array(
       'id', 
       'department_id' 
      ) 
     ) 
    ) 
)); 

必須改變,因爲users表中不再有部門標識。

所以我的第一個目標是改變上述以包括departments_users和departments。我試着註釋掉DEPARTMENT_ID領域和遞歸設置爲2。這是我的蛋糕查找聲明:

$projectsUsers = $this->Project->ProjectsUser->find('all', array(
     'conditions' => array(
       'ProjectsUser.project_id' => $projectId 
     ), 
     'recursive' => 2, 
     'contain' => array(
       'User' => array(
         'fields' => array(
           'id' 
         ) 
       ) 
     ) 
)); 

這是它在調試器中進行:

Array 
(
    [0] => Array 
     (
      [ProjectsUser] => Array 
       (
        [id] => 9999 
        [user_id] => 999 
        [project_id] => 999 
        [status] => active 
       ) 

      [User] => Array 
       (
        [id] => 999 
       ) 

     ) 
    ... 

我希望設置遞歸到2將包括部門,並在調試器中產生這樣的東西:

Array 
(
    [0] => Array 
     (
      [ProjectsUser] => Array 
       (
        [id] => 9999 
        [user_id] => 999 
        [project_id] => 999 
        [status] => active 
       ) 

      [User] => Array 
       (
        [id] => 999 
       ) 

      [Department] => Array 
      (
       [0] => Array 
        (
         [id] => 9 
         [DepartmentsUser] => Array 
          (
           [id] => 99999 
           [department_id] => 9 
           [user_id] => 9999 
          ) 
        ) 
      ) 
     ) 
    ... 

但是,這是我卡住的地方。我在網上發現了很多關於在cakePHP中顯示一個HABTM關係但不是兩個的帖子。我試過在包含內做一個包含;但這是一個錯誤。我甚至在蛋糕裏做了簡單的SQL;但它產生了一個沒有其他輸出的空數組。任何幫助,將不勝感激。謝謝。

回答

0

您將要使用JOIN(see details here)而不是包含。如果你嘗試了這一點,並且無法完全正確地工作,請將你的新嘗試作爲一個問題發佈,我們可以從這裏提供幫助。

PS - 您發佈的代碼有很多問題,但由於我不認爲這是正確的方向,因此可能不需要詳細介紹。

+0

感謝您指引我朝那個方向發展。我比現在更接近現在的工作。我想我會用我的新嘗試發表另一個問題。再次感謝你的幫助! – Joe 2015-01-15 21:46:25