学说:获取 "EAGER" 和 "Hydrate Array"

Doctrine : Fetch "EAGER" and "Hydrate Array"

使用 Doctrine,我的实体中有 fetch=EAGER :

class TrainingOrganization
{
    /**
     * @var TrainingOrganizationVersion[]|ArrayCollection
     *
     * @ORM\OneToMany(
     *     targetEntity="AppBundle\Entity\TrainingOrganizationVersion",
     *     mappedBy="trainingOrganization",
     *     cascade={"persist"},
     *     fetch="EAGER"
     * )
     * @ORM\OrderBy({"id" = "ASC"})
     * @Assert\Valid()
     * @Versionable
     */
    private $versions;

为什么我 "hydrate array" 它不起作用?

同一实体的转储屏幕(第二个是 "Hydrate array"):

使用 Hydration 模式 Query::HYDRATE_ARRAY,Doctrine 只会 return 关于 'row' 的信息。由于您的 versions 属性不是字段而是集合,因此不会 returned。

如果您想包含集合,请改用对象(如您的第一个屏幕截图)。

如果您确实需要序列化您的实体(return使用多维数组而不是对象),请使用序列化程序。由于您使用的是 Symfony,因此您可以轻松使用 Symfony 的 Serializer Component. The JMSSerializerBundle 是一种流行的替代方法。