0

我有一个非常简单的问题。目前我在findAll()方法之后使用 Doctrine2 的方法,getRepository并且我有一个简单的OneToOne关系设置(Manufacturers有一个address_id链接到Addresses基本内容的字段)。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 指定我也想获取相关数据?

4

1 回答 1

1

默认情况下,所有学说关联都是延迟加载的。Doctrine 使用代理对象使关联数据的延迟加载成为可能。对于每个字段,getter 都在代理类中创建。您只需要调用 getter 而不是直接访问公共属性。建议在实体中声明所有字段为私有并为它们定义 getter 和 setter。

于 2013-02-20T18:40:23.923 回答