我有以下数组,我想将同一家公司的所有用户组合在一起。目前,每个用户都显示公司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] =>
)
)
)
)
答案 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在公司模型上查找。