【问题标题】:How to sort randomly with Doctrine DBAL, TYPO3 and TypoScript如何使用 Doctrine DBAL、TYPO3 和 TypoScript 进行随机排序
【发布时间】:2019-04-01 03:17:39
【问题描述】:

在 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】:

    诀窍是将 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{
          ...
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-07
      • 2020-11-09
      • 2011-09-26
      • 2020-03-04
      • 2011-07-15
      • 1970-01-01
      • 2016-08-15
      相关资源
      最近更新 更多