Typo3: LIKE в запросе через QueryBuilder с полем таблицы Dynami c - PullRequest
0 голосов
/ 16 июня 2020

У меня небольшая проблема с запросом через QueryBuilder.

Я получил два объекта модели на родительской странице, которая имеет две дочерние страницы с одним элементом содержимого каждая, каждая из которых обрабатывает один объект модели. На родительской странице должен отображаться список со ссылками на все дочерние страницы вместе с некоторыми данными объектов модели.

У меня есть объекты модели и UID дочерних страниц из-за их общего PID. Приняв JOIN на столах, я получаю четыре результата вместо двух - это нормально. Я должен ограничить свой запрос. Я решил использовать заголовки объектов и дочерних страниц. Они отличаются только одной маленькой деталью.

Но я не могу выполнить ограничение LIKE в предложении WHERE - все, что я получаю, это пустой результат. Я уверен, что что-то упускаю, но я не удалось найти ни одного примера для динамических c значений поля таблицы с ограничением LIKE - все они имеют постоянное значение, такое как известная строка или целое число.

$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('pages');
$result = $queryBuilder
   ->select('pages.uid AS target','tx_myext_domain_model_item.*')
   ->from('pages')
   ->leftjoin(
      'pages',
      'tx_myext_domain_model_item',
      'tx_myext_domain_model_item',
      $queryBuilder->expr()->eq('pages.pid',$queryBuilder->quoteIdentifier('tx_myext_domain_model_item.pid'))
   )
   ->where(
      $queryBuilder->expr()->eq('pages.pid',$queryBuilder->quoteIdentifier('tx_myext_domain_model_item.pid')),
      $queryBuilder->expr()->like('pages.title',$queryBuilder->createNamedParameter('%'.quoteIdentifier('tx_myext_domain_model_item.title').'%'))
   )
   ->execute()
   ->fetchAll();

Примеры заголовка:

  • заголовок объекта: «Lorem ipsum dolor sit amet, conctetuer adipiscing elit»
  • заголовок дочерней страницы: «Lorem ipsum dolor sit amet, conctetuer
    adipiscing elit: KZr0XY3Z "
...