Есть sql-запрос:
SELECT first_table.id FROM first_table
LEFT JOIN second_table ON first_table.id = second_table.company_id
WHERE second_table.review = 'confirmed' AND second_table.status = 'public' OR second_table.review is NULL AND second_table.status is NULL
GROUP BY first_table.id
ORDER BY COUNT(second_table.id) DESC;
Попробовал сам, но выдает неверный результат:
$subquery = $this->connection->select($this->_table, 'first_table');
$subquery->leftJoin('second_table_base', 'second_table', 'first_table.id = second_table.company_id');
$andCondition1 = $subquery->andConditionGroup()
->condition('second_table.status', 'public')
->condition('second_table.review', 'confirmed');
$andCondition2 = $subquery->andConditionGroup()
->isNull('second_table.review')
->isNull('second_table.status');
$subquery->orConditionGroup()
->condition($andCondition2)
->condition($andCondition1);
$subquery->addExpression('COUNT (second_table.id)', 'count');
$subquery->orderBy('count', 'DESC');
$subquery->groupBy('first_table.id');
$subquery->fields('first_table', ['id']);
$subquery->execute()->fetchCol();
Не могу понять где ошибся
Комментарии
Решил проблему:
Нужно было выражение orConditionGroup передать в $subquery->condition($orConditionGroup)