mmh, ok. But the problem is that even if I change the find("count") into a find("all") it still loads data only from Group table.
Yes I am using the AuthComponent for logged in users. But since I want to use my Authorize class also for managing what anonymous users can access I am calling $this->Auth->isAuthorized() in the beforeFilter of AppController with a $user parameter of array('id'=>0). Inside the authorize method I recognize the empty user and make checks for permissions on an hard coded group id. I checked this would work correctly, if only I could make the query in the right way. Let's change the question. Which code would you write to make CakePHP execute this query: > SELECT COUNT(*) AS count FROM groups INNER JOIN groups_perms ON > groups.id=groups_perms.group_id INNER JOIN perm ON > groups_perms.perm_id=perm.id WHERE group.id=1 AND perm.id='can_access_admin' given that you have access to $this->controller()->Group? Thanks On Wednesday, January 2, 2013 7:59:24 PM UTC+1, cricket wrote: > > When running a find('count') the contain param is useless. This is > because the main query is fetching a sum, not a set of records from > which to fetch the associated 'contain' records. > > Are you using AuthComponent? You can use that to fetch the User and > associated records. However, I can't remember how deep it goes. To see > what records it has, put this in your UsersController login method: > > die(debug($this->Auth->user())); > > > http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#accessing-the-logged-in-user > > > On Tue, Jan 1, 2013 at 5:23 PM, Stefano Campanella > <leon...@guildofmessengers.com <javascript:>> wrote: > > Hello all, > > this is my first time posting here. I recently started to study how to > use > > CakePHP and I'm trying to develop a website. > > In my website I am writing a custom authorize component where each user > get > > one or more groups and each group has one or more permissions associated > to > > it. > > I have problems in using the find() method. > > This is my structure: > > User hasAndBelongsToMany Group > > Group hasAndBelongsToMany Perm > > > > I have attached Containable to all the Models (in AppModel) > > > > now in my authorization component I need to check if a group has a > specific > > permission, and for this I use find(): > > > >> if(!isset($this->controller()->Group)){ > >> $this->controller()->loadModel('Group'); > >> } > >> $n_perm=$this->controller()->Group->find('count',array( > >> 'conditions'=>array('id'=>1), > >> 'contain'=>array( > >> 'Perm'=>array( > >> 'conditions' => array('id'=>'can_access_admin') > >> ) > >> ) > >> > >> )); > > > > > > I would expect this to give me a result >=1 if group 1 has the > > 'can_access_admin' permission, and =0 if the group has no such > permission. > > This is not what actually happens, the only query that cakePHP shows is > > this: > > > > SELECT COUNT(*) AS `count` FROM `groups` AS `Group` WHERE `id` = 1 > > > > And it is obviously not enough to find what I requested. > > > > Can anyone help me? > > > > Thanks > > > > -- > > Like Us on FaceBook https://www.facebook.com/CakePHP > > Find us on Twitter http://twitter.com/CakePHP > > > > --- > > You received this message because you are subscribed to the Google > Groups > > "CakePHP" group. > > To post to this group, send email to cake...@googlegroups.com<javascript:>. > > > To unsubscribe from this group, send email to > > cake-php+u...@googlegroups.com <javascript:>. > > Visit this group at http://groups.google.com/group/cake-php?hl=en. > > > > > -- Like Us on FaceBook https://www.facebook.com/CakePHP Find us on Twitter http://twitter.com/CakePHP --- You received this message because you are subscribed to the Google Groups "CakePHP" group. To post to this group, send email to cake-php@googlegroups.com. To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com. Visit this group at http://groups.google.com/group/cake-php?hl=en.