У меня есть HABTM для пользователей и групп. Я хочу показать в представлении Group - все группы, принадлежащие пользователю. Или, говоря иначе, - все Группы, у которых есть Пользователь.Получение всех групп, принадлежащих пользователю
Я запутываюсь в MVC и не могу понять это. Вот мои две модели: класс Курс расширяет AppModel
public $name = 'Course';
public $hasAndBelongsToMany = array('User' =>
array(
'unique' => false
)
);
И ...
public $name = 'User';
public $hasAndBelongsToMany = array('Course' =>
array(
'unique' => true
)
);
Имя таблицы в базе данных courses_users
- это таблица идентификаторов домов групп и идентификаторов пользователей.
Должно быть достаточно простым, но я новичок в CakePHP, поэтому мне бы очень понравилась помощь. Спасибо!
Я думаю, что «торт» будет использовать Containables - http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html. Моя рекомендация заключалась бы в том, чтобы вручную использовать объединения в вашем 'find()' - http://book.cakephp.org/2.0/ru/models/associations-linking-models-together.html#joining-tables. Причина в следующем: скажем, вы ищете всех пользователей в группе X. Если вы используете Containable, он вернет ВСЕ пользователей, и если они не находятся в группе X, их массив групп() будет пуст. Если они находятся в группе X, они будут заполнены данными группы X. Обычно не то, что вы хотите. – iso27002
@ iso27002 - спасибо за это, это очень полезно. Но я думаю, что у меня разрыв в понимании. Как я должен использовать «connect table» classes_users для выполнения поиска? Пример ссылки, которую вы отправили, показывает мне, как получить всю информацию о группах. Но как найти все группы, связанные с текущим идентификатором Auth-> User-> id? – itamar
Если вы используете формат, который вы разместили выше для декларации '$ hasAndBelongsToMany', вам необходимо убедиться, что вы соблюдаете правильные соглашения об именах торта, поэтому у Cake нет проблем с автоматическим поиском данных. См. Ответ @ Kai для получения дополнительной информации. – iso27002