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