15. 06. 2020, 16:51

Hi, habe da ein kleines Problem mit der Formulierung einer Query via Querybuilder.

Ich habe zwei Model-Objects die einer Parent-Page zugewiesen sind, die zwei Child-Pages mit je einem Content-Item besitzt, die jeweils eines der Model-Objects verarbeiten. Nun soll die Parent-Page eine Liste anzeigen, die auf die Unterseiten verlinkt, aber verschiedene Daten der Model-Objekte mit anzeigt.

Ich bekomme die Model-Objects und die uid's der Child-Pages über die pid raus. Da der JOIN ja alle Elemente kreuzweise verknüpft, muss ich das Ergebnis weiter einschränken. Das wollte ich über den Title machen, der sich von den Object-Models zu den Child-Pages nur durch eine angefügte Kennziffer unterscheidet.

Allerdings bekomme ich den LIKE in der WHERE-Klausel nicht hin, er liefert mir immer wieder ein empty Result. Bin mir sicher, dass mir da was fehlt, komme aber nicht drauf was und alle Beispiele beziehen sich auf hart verdrahtete Strings für den LIKE, nicht aber auf einen mit einem dynamischen Table-Field.

[code]$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_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();[/code]

Beispiel für Titles:
Object-Title: "Falsches Üben von Xylophonmusik quält jeden größeren Zwerg"
Child-Page-Title: "Falsches Üben von Xylophonmusik quält jeden größeren Zwerg : KZr0XY3Z"