在TYPO3 Extbase查询中使用Concat

时间:2013-11-03 00:46:54

标签: typo3 extbase

我正在努力面对一点挑战,我想知道解决方案可能是什么,因为我在文档中找不到答案。

这是我当前的工作查询(部分):

$constraints[] = $query->like('kategorie', '%'.$kategorie.'%');

我想做的是:

$constraints[] = $query->like(CONCAT(',', kategorie, ','), '%,'.$kategorie.',%');

这显然根本不起作用。 : - )

每个帮助都非常适合。希望有人知道正确的语法。 TYPO3版本是最新的6.1

非常感谢!

1 个答案:

答案 0 :(得分:1)

首先,Extbase查询生成在6.0中没有变化,因此对于4.x和6.x来说也是如此。

也许你误解了Extbase构建查询的方式。

$query->like('property', '%value%');
当“property”中包含%value%时,

将返回一个对象。必须在域模型中定义此类属性。您只能查询在其域模型中具有“getProperty”方法的属性。

查看您的代码,我认为您正在寻找一种方法来查询逗号分隔值列表中的值?然后你会用

$query->in('kategorien', $kategorie);

修改

您的具体问题似乎是您没有使用真正的关系为您的实体分配“Kategorien”。您正在使用以逗号分隔的列表来保存对另一个模型的引用。你不鼓励这样做,但技术上可行并在TYPO3核心中使用:FrontendUser模型有一个属性“usergroup”,它的工作方式相同。

请查看FrontendUser模型:https://git.typo3.org/Packages/TYPO3.CMS.git/blob/HEAD:/typo3/sysext/extbase/Classes/Domain/Model/FrontendUser.php

你的Kategorien的注释必须正确,例如:

/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\My\Extension\Domain\Model\Kategorien>
*/
protected $kategorien;

还要确保getKategorien是正确的。

如果仍有问题,请记住TCA定义必须使Extbase正常工作。

在我看来,最佳做法是使用TYPO3 6.0中引入的类别API: http://wiki.typo3.org/TYPO3_6.0#Category