如何使用Doctrine DBAL,TYPO3和TypoScript随机排序

问题描述 投票:0回答:1

在TYPO3 v8中通过TypoScript创建查询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{
      ...
  }
}

在TYPO3版本8中现在是使用此精华记录的错误:

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

那么它是否仍然可以随机排序,如果是的话,在上面的TypoScript基础上运行它的诀窍是什么?

doctrine-orm typo3 typo3-8.x typo3-9.x dbal
1个回答
0
投票

诀窍是将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{
      ...
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.