thanks for your help martin,

i change my query and I remove User models Left join associations and
I add gid(group_id) to Session
with the help of this I remove User models in my query

I add
$conditions['GroupPermission.group_id'] = (int)$this->Session-
>read('gid');
I remove
$conditions['User.id'] = $uid;  and
LEFT JOIN "users" AS "User" ON ("User"."group_id" ="Group"."id")

thanks again, ;)


On 23 Eylül, 10:18, "[EMAIL PROTECTED]"
<[EMAIL PROTECTED]> wrote:
> You are right that you can't use User.id when querying Group.
> And looking at the sql for one of my HABTMs I see that they are indeed
> two separate queries. My suggestion from yesterday would not work
> anyway.
>
> If you want this the Cake way then I suggest you take a look at
> Containable behavior. It is used to specify how and which associations
> to load. Looking at the end of that chapter in the manual you will see
> examples of using Containable to specify conditions for associations
> even when they will be performed as a separate query.
>
> That way you could make Group contain Permission with the condition
> that the perms you search for are available. If you get anything back
> you can grant access. This is not exactly the sql you want and you
> would have to check if Permission is empty() using php... but keeping
> on the good side of Cake is worth a lot. :)
>
> On Sep 22, 5:21 pm, aborjinos <[EMAIL PROTECTED]> wrote:
>
> > hİ Martin,
>
> > First so many thanks for your reply, But I can not fix my problem.
>
> > You are right I am trying to checking if the user has any of the
> > required permissions for a given request.
>
> > I write GroupPermission model to apply my query as cake-friendly
> > because I can not create Left Join operation on Group model.
> > I want to create these LEft Joins to make my operations easy
>
> > LEFT JOIN "groups" AS "Group" ON ("GroupPermission"."group_id" =
> > "Group"."id")
> > LEFT JOIN "permissions" AS "Permission" ON
> > ("GroupPermission"."permission_id" ="Permission"."id")
> > LEFT JOIN "users" AS "User" ON ("User"."group_id" ="Group"."id")
>
> > I can not do these Left Joins without GroupPermission model.
> > if I use Group Model then the query will failed. Look at the codes
> > below and output
> > --------
> > if(($uid = (int)$this->Session->read('user')) > 0)
> > {
> >         $conditions['User.id'] = $uid;}
>
> > else
> > {
> >         $conditions['GroupPermission.group_id'] = 0;}
>
> > $conditions['Permission.name'] = $perm;
> > if($this->Group->findCount($conditions) == 0)
> > {
> >         $this->flash("You are not allowed to enter this page!", "/");
> >         exit();
>
> > }
>
> > Output is:
> > ---------
> > Query: SELECT COUNT(*) AS "count"
> > FROM "groups" AS "Group"
> > WHERE "User"."id" = '1'
> > AND "Permission"."name" IN ('pages', 'pages/display', 'pages/display/
> > home')
> > Warning: SQL Error: ERROR: missing FROM-clause entry for table "User"
> > LINE 1: ...NT(*) AS "count" FROM "groups" AS "Group" WHERE
> > "User"."id... ^ in /home/ch/lappstack-0.9-beta-1/apache2/htdocs/
> > authentication/cake/libs/model/datasources/dbo_source.php on line 440
> > ----------
>
> > Also I add foreign keys to my models
> > --------------
> > class GroupPermission extends AppModel
> > {
> >         var $name = 'GroupPermission';
> >         var $useTable = 'groups_permissions';
> >         var $belongsTo = array(
> >                 'Group' => array(
> >                         'className'  => 'Group',
> >                         'foreignKey' => 'group_id'
> >                 ),
> >                 'Permission' => array(
> >                         'className'  => 'Permission',
> >                         'foreignKey' => 'permission_id'
> >                 )
> >         );
>
> > }
>
> > class Group extends AppModel
> > {
> >         var $name = 'Group';
> >         var $hasMany =  array(
> >                 'User' => array(
> >                         'className'  => 'User',
> >                         'foreignKey' => 'group_id'
> >                 )
> >         );
> >         var $hasAndBelongsToMany = array(
> >                 'Permission' => array(
> >                                 'className' => 'Permission',
> >                                 'joinTable' => 'groups_permissions',
> >                                 'foreignKey' => 'group_id',
> >                                 'associationForeignKey' => 'permission_id')
> >         );
>
> > }
>
> > class Permission extends AppModel
> > {
> >         var $name = 'Permission';
> >         var $hasAndBelongsToMany = array(
> >                 'Group' => array(
> >                         'className' => 'Group',
> >                         'joinTable' => 'groups_permissions',
> >                         'foreignKey' => 'permission_id',
> >                         'associationForeignKey' => 'group_id')
> >         );}
>
> > ------------
>
> > if you know another way or something else please let me know. Thanks
> > again Martin.
--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to