学说:获取“EAGER”和“Hydrate Array”

时间:2017-10-31 10:16:42

标签: symfony doctrine-orm symfony-3.3

使用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;

为什么当我做“水合物阵列”时,它不起作用?

我为同一实体转储的屏幕(第二个是“水合物阵列”):

enter image description here

1 个答案:

答案 0 :(得分:1)

使用水合作用模式Query::HYDRATE_ARRAY,Doctrine将仅返回有关该行'行的信息。由于您的versions属性不是字段而是集合,因此无法返回。

如果您想要收藏集,请改用对象(例如您的第一个屏幕截图)。

如果您确实需要序列化实体(返回多维数组而不是对象),请使用序列化程序。由于您正在使用Symfony,因此您可以轻松使用Symfony的Serializer ComponentJMSSerializerBundle是一种受欢迎的选择。