2012-03-20 103 views
0

我不知道是否有更好的方式來實現這一目標:多CakePHP的查詢連接

$rights = $this->User->Role->Right->query(
    "SELECT ri.* 
    FROM rights AS ri 
    LEFT JOIN roles_rights AS rr ON rr.right_id = ri.id 
    LEFT JOIN users_roles AS ur ON ur.role_id = rr.role_id 
    WHERE ur.user_id = " . Sanitize::clean($user['User']['id'])); 

我希望有一個更好的方式來獲得特定用戶的所有權利。

我想通過$ this-> User - >訪問權限...這可能嗎?

用戶具有一個或多個角色,角色具有一個或多個權限。

回答

0

嘗試翻轉過來:

$rights = $this->User->Role->Right->query(
    SELECT ri.* 
    FROM users_roles AS ur 
    INNER JOIN roles_rights AS rr ON rr.role_id = ur.role_id 
    INNER JOIN rights ri ON ri.id = rr.right_id 
    WHERE ur.user_id = Sanitize::clean($user['User']['id'])); 
+0

哪裏有什麼好處?我想通過模型訪問權限。我不能得到一個用戶的實例,並做這樣的事情︰'$ rights = $ User-> Role-> Right-> find('list');'? – Fender 2012-03-20 11:51:42

+0

對不起..我正在專注於你的SQL ..不是PHP的專業版.. – barsju 2012-03-20 11:55:26

+0

確定:)但JOIN語句順序的影響不是太大,是嗎? – Fender 2012-03-20 11:58:30