CakePhp3:选择大于关系的寄存器数量Has Many

时间:2017-11-23 14:17:20

标签: cakephp orm cakephp-3.0 has-many cakephp-3.x

我有一个疑问如何解决这个问题。我有两个表,属性和图像的关系有很多。一个属性可以有0,1或更多相关的图像。我想搜索具有多个图像相关的属性。我尝试过:

$propertiesExclusive = $this->Properties->find('all')->contain( [ 'PropertyTags', 

        'ImagesAffiliates' => function($e){
                        $e->group([ 'ImagesAffiliates.id HAVING (COUNT(ImagesAffiliates.id) > 1 )' ]);

                return $e;

        }])

    ->order(['id' => 'DESC'])->where(['exclusive' => 1])->where($defaultWhere)->limit(7)->all();

这个想法是,如果一个房产没有图像或只有一个,我们不能得到它。

我试过几种形式,但没办法。

1 个答案:

答案 0 :(得分:0)

谢谢@adm。你说对了。我不得不将选择与参考"别名"混合使用。 total_images字段。

 $this->Properties->find('all')->contain('ImagesAffiliates')->select([ 'total_images' => $propertiesNew->func()->count('ImagesAffiliates.id'), 'ImagesAffiliates.id' ])
                ->leftJoinWith('ImagesAffiliates')
                ->group(['ImagesAffiliates.property_id'])
                ->enableAutoFields(true)->having(['total_images >' => 2])->limit(7)->all();