Итак, я совершенно не понимаю, что-то в моем коде не работает, и я не знаю, что и почему. Вот в чем проблема:Я извлекаю результаты из базы данных, чтобы показать, что имеется в наличии. У меня есть две части: публичная и управленческая. Проблема в том, что у меня нет одинаковых результатов, хотя код почти идентичен:
Репозиторий:
{% block body %}
Ex-Libris
{% set path = 'lib_xl' %}
{% set pages = liste.pages %}
{% set currentPage = liste.page %}
{% set haveFilter = true %}
{% set filtre = nomFilt %}
{% set btnList = true %}
{% include "_partials/_pagination.html.twig" %}
{% set n = 0 %}
{% for l in liste.data %}
{% set n = n+1 %}
{{ l.etatLibris.libelle|upper }}
{{ l.livre }} [/b]
{% set i = 0 %}{% set n = l.dessinateurs|length + l.auteurs|length %} {% for a in l.dessinateurs %}{% set i = i+1 %} {{ a.prenom }} {{a.nom}}{% if i > n-1 %} {% elseif i == n - 1 %} et {% else %}, {% endif %} {% endfor %}
{% for a in l.auteurs %}{% set i = i+1 %} {{ a.prenom }} {{a.nom}}{% if i > n-1 %} {% elseif i == n - 1 %} et {% else %}, {% endif %} {% endfor %}
[img]{{ asset([/img]
paru aux éditions {{ l.editeur.nom }}
en {{ l.date|format_datetime(pattern='MMMM yyyy', locale='fr') }}
{{ l.commentaire }}
[list]{% for bd in l.bdconcernes %}
[*][url={{ bd.lien }}]{{ bd.nombd }}[/url]
{% endfor %}
[/list]
{% endfor %}
{% include "_partials/_pagination.html.twig" %}
Что касается части управления, код почти идентичен, как я уже сказал (в общедоступном коде есть только одна строка, которая блокирует все неактивные объекты (p.active) (ни один из них не деактивирован, поэтому мы можем игнорировать это) и порядок отличается (по номеру позиционирования, но все имеют значение 0, так что...)).
Дело в том, что у меня есть 18 объектов, которые должны отображаться (SQL и Paginator дают 18 объектов), но только 14 встали. Почему?
Изменить: проблема устранена добавлением ->select('DISTINCT p') после '$this->createQueryBuilder('p')'. Спасибо Джулиану Костеру!
Итак, я совершенно не понимаю, что-то в моем коде не работает, и я не знаю, что и почему. Вот в чем проблема:[b]Я извлекаю результаты из базы данных, чтобы показать, что имеется в наличии. У меня есть две части: публичная и управленческая. Проблема в том, что у меня нет одинаковых результатов, хотя код почти идентичен: Репозиторий: [code]public function findAllLimit(int $page, $onglet, $filtre = "", array $auts = [], int $limit = 25):array { $tirage = ['tirage', 'tirages-anciens']; $objets = ['objet', 'jeu', 'figurine'];
$result = []; $listId = []; $query = $this->createQueryBuilder('p') ->leftJoin('p.auteurs', 'a') ->leftJoin('p.dessinateurs', 'd') ->innerJoin('p.editeur', 'e') ->innerJoin('p.serie', 's') ->innerJoin('p.paratype', 't') ->andWhere('p.active = :etat') ->setParameter('etat', true); if($filtre != ""){ $query->andWhere('p.parabd_titre LIKE :f OR a.nom LIKE :f OR a.prenom LIKE :f OR d.nom LIKE :f OR d.prenom LIKE :f OR e.nom LIKE :f') ->setParameter('f', "%".$filtre."%"); }
{% set i = 0 %}{% set n = l.dessinateurs|length + l.auteurs|length %} {% for a in l.dessinateurs %}{% set i = i+1 %} {{ a.prenom }} {{a.nom}}{% if i > n-1 %} {% elseif i == n - 1 %} et {% else %}, {% endif %} {% endfor %} {% for a in l.auteurs %}{% set i = i+1 %} {{ a.prenom }} {{a.nom}}{% if i > n-1 %} {% elseif i == n - 1 %} et {% else %}, {% endif %} {% endfor %}
[img]{{ asset([/img]
paru aux éditions {{ l.editeur.nom }} en {{ l.date|format_datetime(pattern='MMMM yyyy', locale='fr') }}
{{ l.commentaire }}
[list]{% for bd in l.bdconcernes %} [*][url={{ bd.lien }}]{{ bd.nombd }}[/url] {% endfor %} [/list]
{% endfor %}
{% include "_partials/_pagination.html.twig" %} [/code] Что касается части управления, код почти идентичен, как я уже сказал (в общедоступном коде есть только одна строка, которая блокирует все неактивные объекты (p.active) (ни один из них не деактивирован, поэтому мы можем игнорировать это) и порядок отличается (по номеру позиционирования, но все имеют значение 0, так что...)). Дело в том, что у меня есть 18 объектов, которые должны отображаться (SQL и Paginator дают 18 объектов), но только 14 встали. Почему? Изменить: проблема устранена добавлением ->select('DISTINCT p') после '$this->createQueryBuilder('p')'. Спасибо Джулиану Костеру!