Как сортировать случайным образом с помощью Doctrine DBAL, TYPO3 и TypoScript - PullRequest
0 голосов
/ 27 октября 2018

При создании запроса с помощью TypoScript в TYPO3 v8 Doctrine-Framework уже используется для создания SQL-запроса. Следующий код выдает ошибку, но это было возможно в предыдущих версиях TYPO3:

lib.myElement = CONTENT
lib.myElement {
  wrap =  <div class="inner-wrapper">|</div>
  required = 1

  table = tt_content
  select.languageField = sys_language_uid
  select.pidInList = {$pidConstant}
  select.max = 1
  select.where = colPos = 0
  select.orderBy = RAND()
  select.selectFields = bodytext,image,header,header_link
  renderObj=COA
  renderObj{
      ...
  }
}

В версии 8 TYPO3 теперь регистрируется ошибка с этой сущностью:

{"exception":"Doctrine\\DBAL\\Driver\\Mysqli\\MysqliException: Unknown column 'rand()' in 'order clause'...}

Так что все еще можно сортировать случайным образом, и если да, то какой трюк заставить его работать на основе описанного выше TypoScript?

1 Ответ

0 голосов
/ 27 октября 2018

Хитрость заключается в том, чтобы добавить RAND () в список полей и назначить псевдоним. Псевдоним можно использовать для сортировки.

lib.myElement = CONTENT
lib.myElement {
  wrap =  <div class="inner-wrapper">|</div>
  required = 1

  table = tt_content
  select.languageField = sys_language_uid
  select.pidInList = {$pidConstant}
  select.max = 1
  select.where = colPos = 0
  select.orderBy = my_alias
  select.selectFields = bodytext,image,header,header_link,RAND() as my_alias
  renderObj=COA
  renderObj{
      ...
  }
}
...