我想創建一個簡單的查詢來獲取一個查詢中的所有相關實體(請參閱Doctrine - Get entity and relationships in one query)。對於一些原因學說遇到錯誤:左連接遇到「調用成員函數add()在PersistentCollection中的非對象」
Call to a member function add() on a non-object in PersistentCollection
完整堆棧跟蹤:
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()
組映射:
Group:
type: entity
table: groups
id:
id:
type: integer
generator:
strategy: AUTO
oneToMany:
influences:
targetEntity: Influence
mappedBy: group
cascade: [ "persist" ]
影響映射:
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
這裏是我的查詢生成器邏輯:
$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();
感謝您的任何提示。
不知道錯誤消息,但是您在連接的對象上使用了where子句,因此您將無法獲得任何沒有影響的組。你的問題有點不清楚,因爲看起來你的查詢有效?那麼在哪裏添加被稱爲? – Cerad 2014-08-29 16:45:15
我已經添加了堆棧跟蹤,查詢本身工作部分如果我回聲SQL並手動運行它。影響使用了包含組織標識和組標識的組合主鍵。我應該如何通過組織對象? – CSchulz 2014-08-29 16:53:49
好的感謝與WHERE子句的提示,我找到了正確的「星座」來生成查詢,但錯誤仍然存在。 – CSchulz 2014-08-29 17:27:35