cakeHABTM Торт php найти

У меня есть таблицы ниже с ассоциациями HABTM.

user, group , groups_users

group , project, projects_groups

public $hasAndBelongsToMany = array(
'Group' =>
array(
'className' => 'Group',
'joinTable' => 'groups_users',
'foreignKey' => 'user_id',
'associationForeignKey' => 'group_id',
'unique' => 'keepExisting',
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => ''
)
);

Я пытаюсь получить всех пользователей в виде списка для флажков, которые находятся в проекте, используя идентификатор проекта, используя запрос ниже

$users = $this->User->Group->Project->find('list',
array(
'conditions' => array('Project.id' => $this->Session->read('Projectid'))
,'contain' => array(
'User' => array( 'fields' => 'User.id', 'User.email')
)
)
);

Но ошибка ниже

Модель «Проект» не связана с моделью «Пользователь»

На самом деле я пробовал разные способы заставить это работать, но я не могу понять, как это правильно, как я могу добиться того, чего я хочу. ура

1

Решение

Я достиг того, что хотел с помощью объединений, есть ли способ сделать это с помощью сопоставления моделей вместо опции ручного объединения?

    $options['joins'] = array(
array('table' => 'groups_users',
'alias' => 'gu',
'type' => 'LEFT',
'conditions' => array(
'gu.user_id = User.id',
)
),
array('table' => 'projectGroups',
'alias' => 'pg',
'type' => 'LEFT',
'conditions' => array(
'pg.group_id = gu.group_id',
)
)
);

$this->User->recursive = -1;
$options['conditions'] = array(
'pg.project_id = ' =>  $this->Session->read('Projectid'),
'User.Active = ' => true
);
$users = $this->User->find('list', $options);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]