到目前为止,我已经在我正在处理的一个简单应用程序中设置了3个模型:
到目前为止,我有这些模型:
当我从顶级表查询数据时,我得到了子表的模式,关联信息。但我没有从子表中获取任何持久数据。
我对结果的期望是来自顶级模型的数据和来自相关子模型的数据。非常感谢任何帮助。
可能有用的注释,我使用的是Zend 1.11.10和Doctrine 2
这就是我的查询:
$users = $em->createQuery('select u from Fiobox\Entity\UserModule\UserAccountEntity u')->execute();
Zend_Debug::dump($users[0]);
这是我的顶级模型中的关联:
/**
*
* @param \Doctrine\Common\Collections\Collection $property
* @OneToMany(targetEntity="UserAccountEntityStrings",mappedBy="UserAccountEntity", cascade={"persist","remove"})
*/
private $strings;
这些是我孩子模型中的关联:
/**
*
* @var UserAccountEntity
* @ManyToOne(targetEntity="UserAccountEntity")
* @JoinColumns({
* @JoinColumn(name="entity_id", referencedColumnName="entity_id")
* })
*/
private $user;
/**
* @var EavAttribute
* @ManyToOne(targetEntity="Fiobox\Entity\EavModule\EavAttributes")
* @JoinColumn(name="attribute_id", referencedColumnName="attribute_id")
*/
private $attributes;
答案 0 :(得分:1)
你真的尝试了什么吗?
Doctrine将延迟加载给你的东西。 var_dump可能显示子对象的持久代理对象集合。但是如果你访问它们,它们将自动加载:
<?php
$users = $em->createQuery('select u from Fiobox\Entity\UserModule\UserAccountEntity u')->fetchAll();
foreach($users as $u){
foreach($u->strings as $s){
var_dump($s);
}
}
如果您知道自己需要所有子数据,那么您也可以在DQL中强制获取fetch:
<?php
$users = $em->createQuery('select u, s from Fiobox\Entity\UserModule\UserAccountEntity u JOIN u.strings s')->fetchAll();