我有一个非常简单的问题。目前我在findAll()
方法之后使用了Doctrine2的getRepository
方法,我设置了一个简单的OneToOne
关系(Manufacturers
有一个链接到address_id
的字段Addresses
{1}},基本的东西)。我正在尝试使用Manufacturer
中的一个字段填充表格,其余字段填充来自关联Address
的数据。
我在我的视图代码中执行此操作:
<?php foreach($instances as $instance) { ?>
<?php $address = $instance->address; ?>
<tr>
<td><?php echo $instance->name; ?></td>
<td><?php echo $address->street; ?></td>
<td><?php echo $address->city; ?></td>
<td><?php echo $address->state; ?></td>
<td><?php echo $address->zip; ?></td>
</tr>
<?php } ?>
其中$instances
是Manufacturers
表中的每个条目。每个属性都是公开的,但出于某种原因,Doctrine2不会将相关的Address
数据与调用findAll()
Manufacturers
一起提取。我做错了什么?
这是我用来获取数据的原因:
$instances = $this->doctrine->em->getRepository('Entities\Manufacturer')->findAll();
我是否需要以某种方式向Doctrine指定我想要获取相关数据?
答案 0 :(得分:1)
默认情况下,所有学说关联都是延迟加载。 Doctrine正在使用代理对象来延迟加载相关数据。对于每个字段,getter都在代理类中创建。您只需要调用getter而不是直接访问公共属性。 建议在您的实体中声明所有字段为私有字段,并为它们定义getter和setter。