Есть две сущности Product и Category
Product связан с Category
/**
* @ORM\ManyToOne(targetEntity="Category", inversedBy="category")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id")
*/
private $category;
Мне нужно вывести все продукты с учётом категорий т.е. сначала все продукты одной категории, потом другой и т.д.
я в классе репозитория продукта делаю такую выборку
$query = $this->getEntityManager()
->createQuery('
SELECT p
FROM AppBundle:Product p
order by p.category DESC
');
И получаю вот такую ошибку
An exception has been thrown during the rendering of a template ("An exception occurred while executing 'SELECT DISTINCT id_0 FROM (SELECT p0_.id AS id_0, p0_.title AS title_1, p0_.slug AS slug_2, p0_.description AS description_3, p0_.small_description AS small_description_4, p0_.tech_characteristic AS tech_characteristic_5, p0_.tabl_koef AS tabl_koef_6, p0_.sertific AS sertific_7, p0_.price AS price_8, p0_.vt AS vt_9, p0_.lm AS lm_10, p0_.ip AS ip_11, p0_.seo_description AS seo_description_12, p0_.seo_keys AS seo_keys_13, p0_.is_new AS is_new_14, p0_.is_popular AS is_popular_15 FROM products p0_) dctrn_result ORDER BY vt_9 ASC, p0_.category_id DESC LIMIT 12 OFFSET 0':
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'p0_.category_id' in 'order clause'").
В чём может быть проблема? Заранее спасибо!
Ну если раскрутить в приличный вид этот хлам, получится запрос
SELECT DISTINCT id_0
FROM ( SELECT
p0_.id AS id_0,
p0_.title AS title_1,
p0_.slug AS slug_2,
p0_.description AS description_3,
p0_.small_description AS small_description_4,
p0_.tech_characteristic AS tech_characteristic_5,
p0_.tabl_koef AS tabl_koef_6,
p0_.sertific AS sertific_7,
p0_.price AS price_8,
p0_.vt AS vt_9,
p0_.lm AS lm_10,
p0_.ip AS ip_11,
p0_.seo_description AS seo_description_12,
p0_.seo_keys AS seo_keys_13,
p0_.is_new AS is_new_14,
p0_.is_popular AS is_popular_15
FROM products p0_
) dctrn_result
ORDER BY
vt_9 ASC,
p0_.category_id DESC
LIMIT 12 OFFSET 0
Сразу видно, что p0_.category_id
не может видеться во внешнем запросе. Он теперь стал dctrn_result.category_id
.
Но неиспользование всего этого бешеного набора полей и отсутствие каких-либо условий отбора заставляет спросить: почему не просто
SELECT DISTINCT id_0
FROM products
ORDER BY
vt ASC, category_id DESC
LIMIT 12 OFFSET 0
?
PS. Как всё это должно выглядеть в Симфонии - не спрашивайте, не знаю...
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?