我正在尝试使用逻辑分离(OR)来基于两个关联的表过滤表的结果。
例如,我想在Products
和Reviews
上找到所有Reviews.Users
过滤条件。
其中Reviews.Users.super
是->eq(true)
OR
其中Reviews.visibility
是->eq('visibility', 'public')
,而Reviews.published
是->isNotNull('published')
使用两个->innerJoinWith
创建一个连词。
this->Products->find()
->distinct()
->where(['Products.status' => 'current'])
->contain(['Reviews.Users'])
->innerJoinWith('Reviews', function($q) {
return $q
->where(['Reviews.visibility' => 'public'])
->andWhere(['Reviews.published IS NOT' => null]);
})
->innerJoinWith('Reviews.Users', function($q) {
return $q
->where(['Users.super' => true]);
})
->all();