Extbase удаляет дубликаты объектов в контроллере / репозитории - PullRequest
0 голосов
/ 08 мая 2018

Мы взяли проект у другой компании, и нам нужно было обновить их TYPO3. Сейчас мы находимся на последней версии 8.7.13.

Существует расширение продукта, которое фильтрует продукты, группы и проекты в одном представлении. По неизвестным причинам следующие продукты выводят 2 продукта, которые оба одинаковы:

public function findByObjekt($uid) {
    $query = $this->createQuery();

    $query->matching(
             $query->contains('objekte', $uid),
             $query->equals('objekte.hidden',0),
             $query->equals('objekte.deleted',0)
    );

    $query->getQuerySettings()->setRespectStoragePage(FALSE);
    $query->getQuerySettings()->setRespectSysLanguage(FALSE);
    return $query->execute();
}

Есть ли способ удалить дублирующиеся записи / объекты здесь, прежде чем они будут возвращены в контроллер для вывода? Я проверил несколько документов, но не смог найти способ получить уникальные результаты (что, вероятно, обычно нет необходимости ...). Еще одна мысль - обработать дублирующую логику в шаблоне флюида, но я думаю, это довольно плохое решение.

1 Ответ

0 голосов
/ 09 мая 2018

Полагаю, у вас есть нужная запись на языке по умолчанию и в одной локализации. В extbase исходная языковая запись и все ее локализации имеют один и тот же идентификатор (uid), хотя в базе данных они различаются. Extbase обычно находит запись только с текущим языком.

Как и вы setRespectSysLanguage(FALSE), extbase не будет фильтровать по языку. Вот почему вы получаете две записи.

Почему вы все-таки устанавливаете значение false для свойстваSysLanguage?

...