分组包含cakephp

时间:2016-05-23 08:32:05

标签: php cakephp

Hellow,我想在cakephp中使用group in within。在下面的例子中,我想在organizationUser数组中只采用不同的组织..

         $options = array(
        'conditions' => array('User.' .$this->User->primaryKey => $userId), 
        'contain' => array(
                        'OrganizationUser'=>array(
                            'conditions'=>['status'=>3],
                            'group'=> array( 'OrganizationUser.organization_id')),
                        'OrganizationUser.Organization',
                        'OrganizationUser.Organization.Noticeboard',
                        'OrganizationUser.Organization.Newsboard',
                        'OrganizationUser.Organization.Noticeboard.Branch',
                    ),
        'page'=>$page,
        'limit'=>$limit
        );



        $org = $this->User->find('all', $options);

但这会引发错误,例如“未找到专栏”和“条件”等错误。在OrganizationUser中工作得很好但是' group'不工作。我正在使用cakephp版本2.谢谢。

2 个答案:

答案 0 :(得分:2)

我不认为cakephp 2+提供的东西就像你正在做的那样使字段在包含内变得明显。所以最好尝试以下.. 替换:

'group'=> array( 'OrganizationUser.organization_id')

通过

'fields'=> array( 'DISTINCT OrganizationUser.organization_id')

可能适合你。

答案 1 :(得分:0)

就我而言,我使用的是蛋糕版本4 +。

在我的餐桌上我建立的关系

s = df.filter(like='status')

df.join(s.groupby(s.columns.str.split('_').str[0], axis=1)
  .max().gt(2000).astype(int)
  .add_suffix('_ge2000')
)

我称这种关系为

$this->belongsTo('CreatedOperator')
      ->setClassName(USERS_PLUGIN . '.Users')
      ->setForeignKey('created_by')
      ->setJoinType('INNER')
   ;