symfony - 教义 2.3 标准。访问相关对象

标签 symfony doctrine-orm criteria

我正在尝试根据 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 的实例。因此,不可能在其中放置另一个 Exprcriteria。只有 Expr AndOr 需要另一个 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/

相关文章:

php - Symfony2,EntityManager::getRepository(命名空间\To\Some\Class::class 或 '**Bundle:Entity')

php - 请求中的 SQL future 日期

java - 在单元测试中模拟 Controller 标准...grails

Android 保护位置测试

java - 将oracle游标转换为jpa条件查询

php - Symfony - 更改 Controller 的实例化和执行方式

PHP 缺少 mysql pdo 驱动程序

php - 装饰服务的循环引用问题

PHP fatal error : I'm trying to implement a Form\AbstractType in my Symfony2 application

php - 原则 - preUpdate 事件订阅者根本不会被解雇