DQL выбрать всех пользователей и подсчитать количество бронирований каждого - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь выбрать всех своих пользователей и, для каждого пользователя, посчитать количество сделанных бронирований и входящих.На данный момент у меня есть это

$qb = $this->createQueryBuilder('user');
return $qb->select('user')
  ->leftJoin('user.reservations', 'reservations')
  ->leftJoin('reservations.marketDate', 'market_date')
  ->addSelect('COUNT(nb_reservations FROM reservations WHERE market_date.date >= CURRENT_DATE())')
  ->orderBy('user.name')
  ->groupBy('user.id')
  ->getQuery()
  ->getResult();

Но у меня есть эта ошибка

[Семантическая ошибка] строка 0, столбец 59 возле 'market_date> =': Ошибка: Class 'market_date'не определено.

Пожалуйста, помогите мне

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Попробуйте это:

$qb = $this->createQueryBuilder('user');
return $qb->select('user, count(reservations) as count')
  ->leftJoin('user.reservations', 'reservations')
  ->leftJoin('reservations.marketDate', 'market_date')
  ->where('market_date.date >= CURRENT_DATE()')
  ->orderBy('user.name')
  ->groupBy('user.id')
  ->getQuery()
  ->getResult();
0 голосов
/ 09 мая 2018

Синтаксис в COUNT не выглядит правильным: COUNT не должен включать в себя весь оператор. Попробуйте это:

->addSelect('COUNT(nb_reservations) FROM reservations WHERE market_date.date >= CURRENT_DATE()')
...