Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Вывод из HABTM таблиц

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
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
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru