Проблема с запросом к БД в Symfony

155
26 апреля 2019, 16:10

Сайт на symfony 3.4

Есть 2 таблицы:

product

и category

Необходимо вывести информацию из этих таблиц в виде:

Так, чтобы отображалось количество продуктов в каждой категории товаров

Написал вот такой DQL запрос:

    SELECT a.id, a.category, a.enabled, COUNT(b.id) as prcnt
    FROM AppBundle:Category a
    JOIN AppBundle:Product b WITH a.id = b.category
    WHERE a.enabled = :enabled

И в отладку вывел результат:

array:1 [▼
  0 => array:4 [▼
    "id" => 1
    "category" => "Фантастика"
    "enabled" => true
    "prcnt" => "6"
  ]
]

Как видите нашлась только 1 категория, к томуже неправильно посчитал COUNT, в категории "Фантастика" 4 товара, а он посчитал вообще все товары - 6.

Где ошибка в моём DQL-запросе? Почему на выходе только 1 категория? Как правильно написать этот DQL-запрос? И зачем в DQL ввели WITH вместо ON??

И вообще по best practice в symfony лучше писать DQL-запросы или использовать сборщик createQueryBuilder?

Answer 1

Для отображения результатов по конкретной категории необходимо выполнить группировку. В данном случае:

SELECT a.id, a.category, a.enabled, COUNT(b.id) as prcnt
FROM AppBundle:Category a
JOIN AppBundle:Product b WITH a.id = b.category
WHERE a.enabled = :enabled
GROUP BY a.id
READ ALSO
Условие если <input> содержит файл php

Условие если <input> содержит файл php

Подскажите пожалуйста, есть тег <input name="upload[]" type="file" multiple="multiple" /> Как сделать условие php если input имеет файлВопрос так и не решен

165
отличие сессий от кук [дубликат]

отличие сессий от кук [дубликат]

На данный вопрос уже ответили:

162
foreach и запросы к базе(совсем новичок)

foreach и запросы к базе(совсем новичок)

Пытаюсь сделать выгрузку товаров из корзины магазина с помощью PHPExcel

132