2013-03-19 43 views
0

我CakePHP的網站有三個表;用戶,組和用戶。如何從衆多填充組陣列的許多表用戶屬於在CakePHP

users.id聯接通過一對多的關係groups_users.users_id。

groups.id連接通過一對多的關係groups_users.groups.id。

因此,groups_users包含所有用戶和他們在組的列表。E.g用戶1可能是在組1,2和3。groups_users還包含一個單獨主鍵字段。

我希望能夠返回用戶登錄時所屬組成員的組名(groups.groupName)的數組,然後保留此數組並使用它來檢查該組名是否具有以下權限查看該網站的特定頁面。

我是新來的蛋糕,但舒適的用PHP。

回答

0

我更喜歡中可容納在這些情況下。我相信有人會告訴我是否有理由不這樣做。

首先,你需要這行添加到您的用戶模式:

public $actsAs = array('Containable'); 

確保你有你的關係,正確設置在這裏。然後你可以在你的控制器中使用下面的代碼。

$groups = $this->User->find('first', array(
    'conditions' => array(
    'User.id' => $id 
), 
    'contain' => array(
    'Group' => array(
     'fields' => array(
     'Group.groupName' 
     ) 
    ) 
    ) 
)); 
$this->set('groups', $groups); 

最後一行使變量在您的視圖中可用。嘗試在控制器或視圖中運行調試($ groups)以查看輸出。

+0

嘿,謝謝你的幫助 - 我真的很感激它。我掙扎了一下,但在我的UsersController中使用了$ this。你的代碼是否需要封裝在一個函數中?我目前在類UsersController裏面已經有了... – user1818517 2013-03-21 21:18:53

+0

這應該在一個公共函數中匹配控制器類中的頁面名稱。 – Steven 2013-03-23 20:50:34