Orm 多对多,延迟加载。检索一个实体并获取并连接所有实体

Orm 多对多,延迟加载。检索一个实体并获取并连接所有实体,orm,doctrine-orm,lazy-loading,zend-framework3,Orm,Doctrine Orm,Lazy Loading,Zend Framework3,我有Zend Framework 3+应用程序 Class Goods have link "characters": /** * Goods * * @ORM\Entity * @ORM\Table(name="goods") * @property int $id */ class Goods implements InputFilterAwareInterface { /**

我有Zend Framework 3+应用程序

   Class Goods have link "characters":

    /**
     * Goods
     *
     * @ORM\Entity
     * @ORM\Table(name="goods")
     * @property int $id
     */
    class Goods implements InputFilterAwareInterface
    {
          /**
     * @ORM\ManyToMany(targetEntity="\Application\Entity\CharacterValue", inversedBy="goods")
     * @ORM\JoinTable(name="character_value_item",
     *   joinColumns={@ORM\JoinColumn(name="good_id", referencedColumnName="id")},
     *   inverseJoinColumns={@ORM\JoinColumn(name="value_id", referencedColumnName="id")})
     **/

       protected $characters;

   public function getCharacters()
   {
      return $this->characters;
   }
  }
我试图使用此方法通过延迟加载的方法获取字符,但它只返回一个字符。不是产品的所有字符

$dql = 'SELECT u, ch FROM Goods u LEFT JOIN u.characters ch';
此方法如下所示:

$query = $em->createQuery('SELECT u, p FROM CmsUser u JOIN u.phonenumbers p');
$users = $query->getResult(); // array of CmsUser objects with the phonenumbers association loaded
$phonenumbers = $users[0]->getPhonenumbers();


我不明白为什么文档的方法是错误的。设计我的问题的正确方法是什么?

应该可以,尝试强制刷新查询结果,$query->setHint(query::HINT\u refresh,true);如前所述,还包括getCharacters()方法。在问题中添加了getCharacters()函数。谢谢,我正在尝试$query->setHint(query::HINT\u REFRESH,true)。同样的结果。如果在SELECTpart中添加“ch”,则getCharacters()将返回一个元素。不是所有的角色。