首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >in()方法- Typo3 - queryInterface

in()方法- Typo3 - queryInterface
EN

Stack Overflow用户
提问于 2013-07-26 00:49:17
回答 3查看 731关注 0票数 0

如果您使用来自Typo3或Flow3的QueryInterface,您可以在QueryInterface Extbase Dokumentation中查找您可以使用的所有函数。我已经在Flow3中创建了一些and,OR和LogicalNOT,它们工作得很好。

我的问题是in()函数。假设我有一个" task“对象,每个任务都有一个"status”对象(多对一)。现在,我希望所有任务的状态都是“show”属性为“false”。这就是不起作用的地方:

代码语言:javascript
复制
$query->in('status',$this->statusRepository->findByShow(FALSE));

我猜这是因为find()的返回值类型。您可以获取“NULL”,一个对象或数组中的多个对象。但是为什么它不能工作,我如何修复它呢?

谢谢你的帮助。

EN

回答 3

Stack Overflow用户

发布于 2013-07-26 05:44:44

它应该是这样工作的(假设状态对象集不为空):

代码语言:javascript
复制
$query = $this->createQuery();
$query->matching($query->in('status', $this->statusRepository->findByShow(FALSE)));
return $query->execute();
票数 0
EN

Stack Overflow用户

发布于 2013-08-06 01:10:39

当你调用findByShow时,它返回一个QueryResult的对象," in“方法中的第二个参数应该是一个混合元素数组。

尝试使用QueryResult的toArray()方法将对象转换为状态模型的数组。

代码语言:javascript
复制
$this->statusRepository->findByShow(FALSE)->toArray();

我希望它能帮上忙!

奥利维尔

票数 0
EN

Stack Overflow用户

发布于 2014-01-08 20:49:51

我不确定他们现在是否解决了这个问题,但我记得去年我花了几个小时才发现我必须这么做:

代码语言:javascript
复制
$statusIds = Array();
$status = $this->statusRepository->findByShow(FALSE);
foreach($status as $s) $statusIds[] = $status->getIdentifier();
$constraint = $query->in('status',$statusIds);
return $query->matching($constraint)->execute();

Status类必须实现以下内容:

代码语言:javascript
复制
public getIdentifier(){ return $this->Persistence_Object_Identifier; }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17864051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档