创建查询以按逻辑分离的多个数据关联来过滤结果

时间:2019-07-10 17:28:13

标签: cakephp cakephp-3.x

我正在尝试使用逻辑分离(OR)来基于两个关联的表过滤表的结果。

例如,我想在ProductsReviews上找到所有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();

0 个答案:

没有答案