首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >左联接遇到“调用PersistentCollection中的非对象上的成员函数add()”

左联接遇到“调用PersistentCollection中的非对象上的成员函数add()”
EN

Stack Overflow用户
提问于 2014-08-29 16:19:24
回答 1查看 553关注 0票数 1

我正在尝试创建一个简单的查询,以便在一个查询中获取所有相关实体(参见Doctrine - Get entity and relationships in one query)。由于某些原因,学说遇到了错误:

调用PersistentCollection中非对象上的成员函数add()

完全堆栈跟踪:

代码语言:javascript
复制
Error: Call to a member function add() on a non-object in \vendor\doctrine\orm\lib\Doctrine\ORM\PersistentCollection.php line 177
    at n/a
        in \vendor\doctrine\orm\lib\Doctrine\ORM\PersistentCollection.php line 177
    at Doctrine\ORM\PersistentCollection->hydrateAdd()
        in \vendor\doctrine\orm\lib\Doctrine\ORM\Internal\Hydration\ObjectHydrator.php line 456
    at Doctrine\ORM\Internal\Hydration\ObjectHydrator->hydrateRowData()
        in \vendor\doctrine\orm\lib\Doctrine\ORM\Internal\Hydration\ObjectHydrator.php line 179
    at Doctrine\ORM\Internal\Hydration\ObjectHydrator->hydrateAllData()
        in \vendor\doctrine\orm\lib\Doctrine\ORM\Internal\Hydration\AbstractHydrator.php line 140
    at Doctrine\ORM\Internal\Hydration\AbstractHydrator->hydrateAll()
        in \vendor\doctrine\orm\lib\Doctrine\ORM\AbstractQuery.php line 804
    at Doctrine\ORM\AbstractQuery->execute()
        in \vendor\doctrine\orm\lib\Doctrine\ORM\AbstractQuery.php line 574
    at Doctrine\ORM\AbstractQuery->getResult()

组映射:

代码语言:javascript
复制
Group:
  type: entity
  table: groups
  id:
    id:
      type: integer
      generator:
        strategy: AUTO
  oneToMany:
    influences:
      targetEntity: Influence
      mappedBy: group
      cascade: [ "persist" ]

影响制图:

代码语言:javascript
复制
Influence:
  type: entity
  table: influences
  id:
    organisation:
      associationKey: true
    group:
      associationKey: true

  fields:
    influence:
      type: integer

  manyToOne:
    organisation:
      targetEntity: Organisation
      inversedBy: influences
    group:
      targetEntity: Group
      inversedBy: influences

下面是我的查询生成器逻辑:

代码语言:javascript
复制
$builder->select('g, i')
->from('Group', 'g')
->join('g.game', 'game')
->leftJoin('g.influences', 'i', Join::WITH, 'i.organisation = :org')
->setParameter('org', $organisation)
->orderBy('g.name')
->getQuery();

谢谢你的暗示。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-29 18:15:34

这个问题的原因总的来说是很容易的。

我创建了不同的实体类,并在某些点将默认值(如空数组)添加到类字段中。

这将导致上述错误。

我这样做是为了测试我的业务逻辑本地,没有任何数据库连接或类似于Behat。

删除空的array()解决了我的问题。

为了与Behat兼容,我需要一个setter来重新设置一个空数组,或者扩展这个类,并添加一个构造函数来默认字段。

也许其他人对此有另一个想法。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25572240

复制
相关文章

相似问题

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