【问题标题】:TYPO3 create queryTYPO3 创建查询
【发布时间】:2017-11-01 14:19:06
【问题描述】:

我正在尝试使用 TYPO3 创建一个简单的查询。我正在尝试从名称以数值开头的表中检索所有结果,然后对它们进行排序。不幸的是,创建 $statement 变量不起作用。如何使用 TYPO3 类型的查询 ($query->matching,$query->like) 做到这一点。谢谢您的回答。

更新:

TYPO3 版本:8.7.3
我尝试了什么:

public function sortReferencesNumerically(){
    $query = $this->createQuery();
    $statement = 'select * from tx_referencemanager_domain_model_reference WHERE name REGEXP '^[0-9]' ORDER BY CAST(name as SIGNED INTEGER) ASC';
    $query->statement($statement);
    return $query->execute();
}

NewUpdate : 不幸的是我不能使用 $statement 方法,即使它很难工作。如果没有查询->语句方法,有没有办法做到这一点? 我试过这个,但它只显示表中以数字字符开头的第一个数据,即使我有 20-30 之类的也很难。

 array_push($queryConstraints, $query->logicalOr([
                    $query->like('name', '0%'),
                    $query->like('name', '1%'),
                    $query->like('name', '2%'),
                    $query->like('name', '3%'),
                    $query->like('name', '4%'),
                    $query->like('name', '5%'),
                    $query->like('name', '6%'),
                    $query->like('name', '7%'),
                    $query->like('name', '8%'),
                    $query->like('name', '9%'),
                ]));

【问题讨论】:

  • 您能否更具体地发布您尝试过的确切代码?还有关于您的设置的更多详细信息(TYPO3 版本、扩展等)
  • 你的字符串坏了。如果将字符串封装在单引号中,请不要使用单引号来分隔正则表达式。

标签: php mysql typo3 extbase


【解决方案1】:

你的字符串坏了。如果将字符串封装在单引号中,请不要使用单引号来分隔正则表达式。

这应该可行:

public function sortReferencesNumerically(){
    $query = $this->createQuery();
    $statement = 'select * from tx_referencemanager_domain_model_reference WHERE name REGEXP \'^[0-9]\' ORDER BY CAST(name as SIGNED INTEGER) ASC';
    $query->statement($statement);
    return $query->execute();
} 

【讨论】:

  • 有没有办法做到这一点,没有 $statement 方法?
  • 我不知道。据我所知,Extbase 中没有实现正则表达式。也许您应该将该值表示的任何内容分开到一个单独的整数列中。
猜你喜欢
  • 2014-11-03
  • 2021-12-17
  • 2018-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 2021-08-02
  • 2017-11-25
相关资源
最近更新 更多