学说:获取 "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 是一种流行的替代方法。
使用 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 是一种流行的替代方法。