я иметь следующую структуру таблицы с соответствующими отношениями:Наличие (количество) в запросе CakePHP 3 не работает на PostgreSQL
,---------. ,--------------. ,---------.
| Threads | | ThreadsUsers | | Users |
|---------| |--------------| |---------|
| id | | id | | id |
'---------' | thread_id | '---------'
| user_id |
'--------------'
Этот обычай запрос в ThreadsTable предназначается, чтобы найти темы с заданным числом участников. Он отлично работает на MySQL
public function findWithUserCount(Query $query, array $options)
{
return $query
->matching('Users')
->select([
'Threads.id',
'count' => 'COUNT(Users.id)'
])
->group('Threads.id HAVING count = ' . $options['count']);
}
Однако он не на PostgreSQL со следующей ошибкой
PDOException: SQLSTATE[42703]: Undefined column: 7
ERROR: column "count" does not exist
LINE 1: ...ThreadsUsers.user_id)) GROUP BY Threads.id HAVING count = 2
Спасибо, @IMSoP, это работает для меня, я должен был использовать следующий Snippe функции findWithUserCount общественности (Query $ запроса, массив $ вариантов) { возврата $ запрос -> согласующего ('Users') -> выберите (['Threads.id']) -> group ('Threads.id') -> havi ng ('COUNT (Users.id) ='. $ опции [ 'Количество']); } –