Один из слушателей должен считать и нарезать заданную цель

Я получаю указанную выше ошибку при выполнении поиска в Symfony2 CRM, над которой я работал. Согласно поиску в Google, кажется, что это проблема, связанная с пакетом KNP Paginator, но я не могу найти надежного решения.

В этом случае я использую данные из базы данных OpenCart, и мне нужно иметь возможность искать по почтовому индексу и названию компании, которые существуют в таблице адресов, которая объединяется через сопоставленное значение в сущности клиента, defaultaddress.

С этой целью мне пришлось написать собственный запрос в функции с именем findCustomerByPostcode, например:

$this->getEntityManager()
    ->createQuery('SELECT c FROM AppBundle:Oc49Customer c JOIN AppBundle:Oc49Address a WITH c.defaultaddress = a.id WHERE a.postcode LIKE :postcode')
    ->setParameter('postcode','%'.$postcode.'%')
    ->getResult();

Однако, когда я выполняю поиск по почтовому индексу, я получаю следующую ошибку в браузере:

Один из слушателей должен считать и нарезать заданную цель

который относится к файлу Paginator.php в комплекте KNP. Я обновился до самой последней версии, 2.5, но я не могу избавиться от этой ошибки, и для меня это даже не имеет смысла.

Любая помощь очень ценится, так как я не могу придумать другого способа поиска по значению в объединенной таблице.

Который возвращает результаты поиска по почтовому индексу, а затем в контроллере:

$customers = $customer_repository->findCustomerByPostcode($filter_value);

$paginator = $this->get('knp_paginator');
  $pagination = $paginator->paginate(
    $customers,
    $request->query->get('page', 1),
    20
);

person Michael Emerson    schedule 29.09.2016    source источник
comment
вот такая же ошибка.. :(   -  person    schedule 13.01.2017
comment
У меня та же ошибка, что и код разбивки на страницы, если оператор if, поэтому я помещаю его в оператор if и добавляю еще с нулевым $customers, чтобы предотвратить ошибку ветки   -  person Mohammed Zayan    schedule 05.05.2018


Ответы (1)


Вы можете использовать queryBuilder с левым соединением

public function findCustomerByPostcode($postcode) {
    $query = $this->entityManager->createQueryBuilder();
    $query
        ->select('c', 'a')
        ->from('AppBundle:Customer', 'c')
        ->leftJoin('c.address', 'a')
        ->setParameter('postcode', $postcode)

    return $query->getQuery()->getResult();
}
person Moni    schedule 02.07.2020