如何分组这个数组

时间:2012-05-10 18:33:26

标签: cakephp cakephp-2.0 cakephp-2.1

我有以下数组,我想将同一家公司的所有用户组合在一起。目前,每个用户都显示公司ID,有时在一个公司下有2个或更多用户。因此,我有点希望还原它并向公司下的用户显示用户下的用户。我怎么去做那个

Array
(
    [0] => Array
        (
            [User] => Array
                (
                    [id] => 1
                    [company_id] => 20
                    [type] => 
                )


        )

    [1] => Array
        (
            [User] => Array
                (
                    [id] => 6
                    [company_id] => 21
                    [type] => 
                )


        )

    [2] => Array
        (
            [User] => Array
                (
                    [id] => 7
                    [company_id] => 22
                    [type] => 
                )


        )

    [3] => Array
        (
            [User] => Array
                (
                    [id] => 14
                    [company_id] => 21
                    [type] => 
                )


        )

    [4] => Array
        (
            [User] => Array
                (
                    [id] => 15
                    [company_id] => 22
                    [type] => 
                )



        )

    [5] => Array
        (
            [User] => Array
                (
                    [id] => 16
                    [company_id] => 21
                    [type] => 
                )


                )

        )

)

2 个答案:

答案 0 :(得分:1)

从例子中我想你的关系如下:

“用户所属公司”和“公司有很多用户”

@tigrang是对的,如果您对公司进行查找,您将获得按公司分组的用户:

$this->Company->find('all', array('conditions' => array('id' => $companyId)));

如果您的公司模型有许多其他关系,并且您只需要用户,则可以使用ContainableBehaviour。首先将其添加到公司模型中:

public $actsAs = array('Containable);

然后在find()调用中:

$this->Company->find('all', array('conditions' => array('id' => $companyId), 'contain' => array('User')));

'contains'键接受一个Model名称数组或一个Model的字符串。它会动态调整模型绑定,只留下公司和用户模型的数据(如上例所示)。

我错过了一件小事。您还可以在用户模型的查找中使用“组”键:

$this->User->find('all', array('group' => 'company_id'));

尝试两种方法,看看你想出了什么。

答案 1 :(得分:-1)

使用recursive或ContainableBehavior在公司模型上查找。