2011-09-26 81 views
0

我有3种型号,我已经安装迄今在一个简单的应用我的工作:从子模型查询数据

到目前为止,我有这些模型:

  • UserAccountEntity - 顶级表(拥有一对多关系UserAccountEntityStrings)
  • UserAccountEntityStrings - 子表(有一个多一个关系舰UserAccountEntity和EavAttributes
  • EavAttributes - 查找表

当我从顶级表查询数据时,我得到了子表的关联信息。但是我没有从子表中得到任何持久数据。

我期望的结果是来自顶级模型的数据和来自相关子模型的数据。任何帮助,这是非常感谢。

一张纸条,上面可能有帮助,我使用Zend 1.11.10学说和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; 

回答

1

你真的尝试过什么吗?

主义会懒加载东西给你。您的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取回联接:

<?php 
$users = $em->createQuery('select u, s from Fiobox\Entity\UserModule\UserAccountEntity u JOIN u.strings s')->fetchAll();