Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Dark Neo
цитировать
Зарегистрирован: 18 Мар 2009 15:57:50 Сообщения: 13
|
Добавлено: 07 Июл 2009 12:01:45 Заголовок сообщения: Вывод из HABTM таблиц |
|
|
Добрый день.
Возможно, мой вопрос простой, но тем не менее, разобраться сам я пока не могу.
У меня есть две таблицы, которые связаны через третью (связь многие-ко-многим). Связь работает, данные вроде бы выбираются, но у меня возникли проблемы с выводом данных.
У меня есть пользователи и категории. Один пользователь может состоять в нескольких категориях.
Вот модель категорий:
Код: | <?php
class Cat extends AppModel {
var $name = 'Cat';
var $hasAndBelongsToMany = array(
'User' =>
array(
'className' => 'User',
'joinTable' => 'cats_users',
'foreignKey' => 'cat_id',
'associationForeignKey' => 'user_id',
'unique' => true,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
)
);
}
?> |
Мне нужно получить всех пользователей, связанных с данной категорией. Я предполагаю, что это нужно сделать как-то вот так:
Код: | function index($id) {
$this->set('Users', $this->Cat->find('all', array('conditions' => array('Cat.id' => $id))));
} |
В результате чего получаю:
Код: | Array
(
[Cat] => Array
(
[id] => 1
[title] => Фотографы
[pub] => 0
)
[User] => Array
(
[0] => Array
(
[id] => 1
[login] => ivanov
[pass] => pass
[name] => Иванов Иван
[pub] => 0
[startuper] => 1
[CatsUser] => Array
(
[id] => 1
[cat_id] => 1
[user_id] => 1
)
)
)
) |
Как мне выводить всех пользователей из этой категории? |
|
Вернуться к началу |
|
|
Dark Neo
цитировать
Зарегистрирован: 18 Мар 2009 15:57:50 Сообщения: 13
|
Добавлено: 08 Июл 2009 06:39:45 Заголовок сообщения: |
|
|
Проблема решилась следующим образом:
Код: | $this->set('Users', $this->Cat->find('all', array('conditions' => array('id' => $id)))); |
И вывод вот таким:
Код: | <?php foreach ($Users as $user) { $aa = $user['User']; ?>
<?php foreach ($aa as $a) { ?>
<tr>
<td><?php if ($a['startuper'] == 1) { echo $a['name']; } else { echo $html->link($a['name'], '/users/view/'.$a['id']); }?></td>
</tr>
<?php }} ?> |
|
|
Вернуться к началу |
|
|
Dark Neo
цитировать
Зарегистрирован: 18 Мар 2009 15:57:50 Сообщения: 13
|
Добавлено: 16 Июл 2009 15:28:15 Заголовок сообщения: |
|
|
Еще один вопрос по отношению многие-ко-многим.
Как понятно из описания таблиц, одна из них используются для хранения профилей пользователей, другая для хранения групп. Они связаны отношением многие-ко-многим с использованием третьей таблицы.
Когда я редактирую пользователя генерируя формы через скаффолдинг, то могу выбрать, в какие группы входит пользователь: появляется select со списком всех групп, и можно выделить те, в которые пользователь должен входить.
Как реализован такой список, как его вставить в собственное отображение? |
|
Вернуться к началу |
|
|
nws
цитировать
Зарегистрирован: 25 Фев 2008 15:42:23 Сообщения: 96
|
Добавлено: 19 Июл 2009 01:09:42 Заголовок сообщения: |
|
|
http://www.webdevelopment2.com/cakephp-bake-baking-models-controllers-views-cakephp-12/
создай руками скарффолдинг и посмотри исходник =) |
|
Вернуться к началу |
|
|
Dark Neo
цитировать
Зарегистрирован: 18 Мар 2009 15:57:50 Сообщения: 13
|
Добавлено: 20 Июл 2009 14:17:14 Заголовок сообщения: |
|
|
Уже сделал.
http://mrphp.com.au/code/code-category/cakephp/cakephp-1-2/working-habtm-form-data-cakephp |
|
Вернуться к началу |
|
|
|