2015-01-15 3 views
0

Это грязный, потому что я пытаюсь написать поиск торта, в котором используются два отношения HABTM.CakePHP найти с двумя отношениями HABTM

У меня есть одна таблица с именами проектов, и она имеет отношение HABTM к таблице пользователей. Он использует посреднические таблицы project_users для отношений HABTM.

Тогда пользователи имели обыкновение иметь отношение к отношениям с таблицей отделов. Для этой таблицы у пользователей был внешний ключ, называемый 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' 
      ) 
     ) 
    ) 
)); 

Какой должен быть изменен, так как таблица пользователи больше не имеет department_id.

Итак, моя первая цель состояла в том, чтобы изменить вышеуказанное, чтобы включить отделы_услуги и отделы. Я попытался закомментировав 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 
          ) 
        ) 
      ) 
     ) 
    ... 

Но это то место, где я застрял. Я нашел много сообщений в Интернете о отображении одной связи HABTM в cakePHP, но не двух. Я пробовал делать сдерживание в составе; но это делает ошибку. Я даже просто сделал простой SQL в торте; но он создал пустой массив без другого вывода. Любая помощь будет оценена по достоинству. Благодарю.

ответ

0

Вы хотите использовать JOINs (see details here) вместо того, чтобы их содержать. Если вы попробуете это и не сможете заставить его работать правильно, отправьте свою новую попытку как вопрос, и мы можем помочь оттуда.

PS - есть ряд проблем с кодом, который вы отправили, но так как я не думаю, что это правильное направление в любом случае, это, вероятно, не нужно подробно обсуждать.

+0

Спасибо, что указал мне в этом направлении. У меня сейчас все ближе к работе, чем раньше. Я думаю, что я отправлю еще один вопрос с моей новой попыткой. В очередной раз благодарим за помощь! – Joe

Смежные вопросы