如何使用 Doctrine DBAL、TYPO3 和 TypoScript 进行随机排序
How to sort randomly with Doctrine DBAL, TYPO3 and TypoScript
在 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 的基础上得到它的技巧是什么 运行?
诀窍是将 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{
...
}
}
在 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 的基础上得到它的技巧是什么 运行?
诀窍是将 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{
...
}
}