До сих пор я пробовал это в репозитории листинга:
$queryBuilder = $this->_em->createQueryBuilder()
//Select
->select("partial l.{id, price, averageRating, certified, createdAt, commentCount}")
->addSelect("partial t.{id, locale, slug, title, description}")
->addSelect("partial llcat.{id, listing, category}")
->addSelect("partial ca.{id, lft, lvl, rgt, root}")
->addSelect("partial cat.{id, locale, name}")
->addSelect("partial i.{id, name}")
->addSelect("partial u.{id, firstName}")
//->addSelect("partial ln.{id}")
->addSelect("partial ln.{id, city, route, country}")
->addSelect("partial co.{id, lat, lng}")
->addSelect("partial ui.{id, name}")
->addselect("Group_Concat(llcatbis.listingcategoryid SEPARATOR ',') AS allcat")
//From
->from('CocoricoCoreBundle:Listing', 'l')
->leftJoin('l.translations', 't')
->leftjoin('l.listingListingCategories', 'llcat')
->leftjoin('l.listingListingCategories', 'llcatbis')
->leftJoin('llcat.category', 'ca')
//Join::WITH: Avoid exclusion of listings with no categories (disable inner join)
->leftJoin('ca.translations', 'cat', Query\Expr\Join::WITH, 'cat.locale = :locale')
->leftJoin('l.images', 'i')
->leftJoin('l.user', 'u')
->leftJoin('u.images', 'ui', Query\Expr\Join::WITH, 'ui.position = 1')
->leftJoin('l.location', 'ln')
->leftJoin('ln.coordinate', 'co');
//->leftJoin('co.country', 'cy');
$queryBuilder
->addGroupBy('llcat.id');
return $queryBuilder;
, но когда я добавляю, чтобы попробовать это в поисковике:
$categories = $listingSearchRequest->getCategories();
if (count($categories)) {
$queryBuilder
->andWhere('llcat.category IN (:categories)')
->andWhere('allcat = 2')
->setParameter('categories', $categories);
У меня есть следующая ошибка как allcat не определено:
An exception occurred while executing 'SELECT COUNT(*) AS dctrn_count FROM (SELECT GROUP_CONCAT(l0_.listing_category_id SEPARATOR ',') AS sclr_0, ((ACOS(SIN(? * 0.0174532925) * SIN(g1_.lat * 0.0174532925 ) + COS(? * 0.0174532925) * COS(g1_.lat * 0.0174532925) * COS((? - g1_.lng) * 0.0174532925)) * 57.2957795131) * 111.18957696) AS sclr_1, l2_.id AS id_2, l2_.price AS price_3, l2_.certified AS certified_4, l2_.average_rating AS average_rating_5, l2_.comment_count AS comment_count_6, l2_.createdAt AS createdAt_7, l3_.title AS title_8, l3_.description AS description_9, l3_.locale AS locale_10, l3_.id AS id_11, l3_.slug AS slug_12, l4_.id AS id_13, l5_.id AS id_14, l5_.lft AS lft_15, l5_.lvl AS lvl_16, l5_.rgt AS rgt_17, l5_.root AS root_18, l6_.name AS name_19, l6_.locale AS locale_20, l6_.id AS id_21, l7_.id AS id_22, l7_.name AS name_23, u8_.id AS id_24, u8_.first_name AS first_name_25, u9_.id AS id_26, u9_.name AS name_27, l10_.id AS id_28, l10_.country AS country_29, l10_.city AS city_30, l10_.route AS route_31, g1_.id AS id_32, g1_.lat AS lat_33, g1_.lng AS lng_34 FROM listing l2_ LEFT JOIN listing_translation l3_ ON l2_.id = l3_.translatable_id LEFT JOIN listing_listing_category l4_ ON l2_.id = l4_.listing_id LEFT JOIN listing_listing_category l0_ ON l2_.id = l0_.listing_id LEFT JOIN listing_category l5_ ON l4_.listing_category_id = l5_.id LEFT JOIN listing_category_translation l6_ ON l5_.id = l6_.translatable_id AND (l6_.locale = ?) LEFT JOIN listing_image l7_ ON l2_.id = l7_.listing_id LEFT JOIN `user` u8_ ON l2_.user_id = u8_.id LEFT JOIN user_image u9_ ON u8_.id = u9_.user_id AND (u9_.position = 1) LEFT JOIN listing_location l10_ ON l2_.location_id = l10_.id LEFT JOIN geo_coordinate g1_ ON l10_.coordinate_id = g1_.id WHERE g1_.lat < ? AND g1_.lat > ? AND g1_.lng < ? AND g1_.lng > ? AND l3_.locale = ? AND l2_.status = ? AND (l2_.price BETWEEN ? AND ?) AND l4_.listing_category_id IN (?, ?, ?, ?) AND sclr_0 = 2 GROUP BY l4_.id ORDER BY sclr_1 ASC, l2_.average_rating DESC, l2_.admin_notation DESC, l7_.position asc, u9_.position asc) dctrn_table' with params ["46.227638", "46.227638", "2.213749", "fr", 51.1241999, 41.31433, 9.6624999, -5.5591, "fr", 2, "100", "100000", "2", "3", "6", "7"]:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'sclr_0' in 'where clause'