我有一个疑问如何解决这个问题。我有两个表,属性和图像的关系有很多。一个属性可以有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();
这个想法是,如果一个房产没有图像或只有一个,我们不能得到它。
我试过几种形式,但没办法。
答案 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();