Why not just use find()? Can a User belong to so many Groups that you
need to paginate them?

On Wed, Aug 12, 2009 at 8:49 AM, sunertl<[email protected]> wrote:
>
> Hey there,
> after hours of googling and reading tutorials I am desperate now and
> seek your help.
>
> I am working with Cake 1.2.4.8284, I have two models, User (table
> users) and Group (table group) where User HABTM Group. The join table
> is called groups_users, it contains user_id and group_id and an
> additional field called admin.
>
> I try to find all all groups a user is member of and I use paginate
> for it:
> $this->paginate['Group'] = array(
>                                                'order' => 'Group.name ASC',
>                                                'contain' => array(
>                                                        'User' => array(
>                                                                'conditions' 
> => array(
>                                                                        
> 'User.id' => $this->Auth->user('id')
>                                                                )
>                                                        )
>                                                )
>                                        );
> $groups = $this->paginate('Group');
> $this->set('groups', $groups);
>
> When I use debug($groups) I get the following (wrong) result:
> [0] => Array
>        (
>            [Group] => Array
>                (
>                    [id] => 1
>                    [name] => test
>                )
>
>            [User] => Array
>                (
>                    [0] => Array
>                        (
>                            [id] => 1
>                            [name] => Administrator
>                            [GroupsUser] => Array
>                                (
>                                    [id] => 1
>                                    [admin] => 1
>                                    [group_id] => 1
>                                    [user_id] => 1
>                                )
>
>                        )
>
>                )
>
>        )
>
>    [1] => Array
>        (
>            [Group] => Array
>                (
>                    [id] => 2
>                    [name] => test
>                )
>
>            [User] => Array
>                (
>                )
>        )
>
> Ok, I thought, maybe the condition in the contain-clause is wrong but
> then I saw the SQL-debug in the view:
> [...]
> 13      SELECT COUNT(*) AS `count` FROM `groups` AS `Group` WHERE 1 = 1       
>   1
> 1       0
> 14      SELECT `Group`.`id`, `Group`.`name` FROM `groups` AS `Group` WHERE
> 1 = 1 ORDER BY `Group`.`name` ASC LIMIT 20              2       2       0
> 15      SELECT `User`.`id`, `User`.`name`, `GroupsUser`.`id`,
> `GroupsUser`.`admin`, `GroupsUser`.`group_id`, `GroupsUser`.`user_id`
> FROM `users` AS `User` JOIN `groups_users` AS `GroupsUser` ON
> (`GroupsUser`.`group_id` IN (1, 2) AND `GroupsUser`.`user_id` =
> `User`.`id`) WHERE `User`.`id` = 1              1       1       0
>
> So it looks like everything works correctly but the result of the last
> SQL statement is not saved into $groups.
>
> Does anybody have a clue where I make the mistake? I tried almost each
> and every tutorial and how-to but no combination of arguments seems to
> work.
>
> I am working with Cake for almost three years now so I won't consider
> myself a newbie but I have no idea what goes wrong here...
>
> Thanks a lot in advance!
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to