我正在尝试根据 the Doctrine Docs 设置标准。
不幸的是,他们没有告诉您如何访问相关对象的属性。让我给你举个例子。
我有一个 ArrayCollection 产品。每个产品都有一个类别。我想过滤 ArrayCollection 的类别名称。现在我试图建立一个标准如下:
$criteria = Criteria::create()
->where(Criteria::expr()->eq("category.name", "SomeCategoryName"));
现在我得到以下异常:
An exception has been thrown during the rendering of a template ("Unrecognized field: category.name")
如何访问相关对象?
最佳答案
我查看了源代码 Criteria::expr()->eq("name", --- second value ---)
。第二个值需要 Doctrine\Common\Collections\Expr\Value
的实例。因此,不可能在其中放置另一个 Expr
或 criteria
。只有 Expr
And
和 Or
需要另一个 Expr
。
我很确定你想用其他函数来解决这个问题,比如 filter()
或者使用 getIterator()
获取迭代器。这是如何使用 filter()
方法完成的。
$filteredProducts =
$products->filter(function($key, $element) use ($categoryName) {
return $element->getCategory()->getName() === categoryName;
});
如果您可以为每个下一个关系设置
Iterator
,您可以嵌套 foreach 循环并在其中进行过滤。
关于symfony - 教义 2.3 标准。访问相关对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18151567/