【问题标题】:How to populate an array of groups from a many to many table that a user belongs to in cakePHP如何在cakePHP中填充用户所属的多对多表中的组数组
【发布时间】:2013-03-19 23:20:36
【问题描述】:

我的 cakePHP 站点有三个表;用户、组和组用户。

users.id 通过一对多关系加入 groups_users.users_id。

groups.id 通过一对多关系加入 groups_users.groups.id。

因此,groups_users 包含所有用户及其所在组的列表。例如,用户 1 可能在组 1、2 和 3 中。groups_users 还包含一个单独的主键字段。

我希望能够在用户登录时返回一个用户所属的组名(groups.groupName)的数组,然后保留该数组并使用它来检查该组名是否具有查看权限网站的特定页面。

我是蛋糕新手,但对 php 很熟悉。

【问题讨论】:

    标签: mysql arrays cakephp


    【解决方案1】:

    在这些情况下,我更喜欢可收容物。我相信有人会告诉我是否有理由不这样做。

    首先您需要将此行添加到您的用户模型中:

    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);
    

    最后一行使变量在您的视图中可用。尝试在控制器或视图中运行 debug($groups) 以查看输出。

    【讨论】:

    • 嘿,感谢您的帮助 - 我真的很感激。尽管与在我的 UsersController 中使用 $this 有关的错误,我有点挣扎。您的代码是否需要包装在函数中?我现在已经在类 UsersController 里面了......
    • 这应该在一个与控制器类中的页面名称匹配的公共函数中。
    猜你喜欢
    • 2016-02-18
    • 2022-01-19
    • 2015-09-28
    • 2012-06-16
    • 2016-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多