0

とても簡単な質問があります。findAll()現在、メソッドの後にDoctrine2 のメソッドを使用しgetRepositoryており、単純なOneToOne関係をセットアップしています (基本的なものにリンクManufacturersするフィールドがあります)。の 1 つのフィールドをテーブルに入力し、残りのフィールドには関連する のデータを入力しようとしています。address_idAddressesManufacturerAddress

ビューコードでこれを行っています:

<?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すべてのプロパティは public ですが、何らかの理由で Doctrine2 はAddressへの呼び出しとともに関連データを取得しませんfindAll() Manufacturers。私は何を間違っていますか?

これは、データを取得するために使用しているものです。

$instances = $this->doctrine->em->getRepository('Entities\Manufacturer')->findAll();

関連データも取得したいことをDoctrineに何らかの形で指定する必要がありますか?

4

1 に答える 1

1

デフォルトでは、教義の関連付けはすべて遅延読み込みです。Doctrine はプロキシ オブジェクトを使用して、関連付けられたデータの遅延読み込みを可能にします。フィールドごとに getter がプロキシ クラスで作成されます。パブリック プロパティに直接アクセスする代わりに、getter を呼び出すだけです。エンティティですべてのフィールドをプライベートに宣言し、それらのゲッターとセッターを定義することをお勧めします。

于 2013-02-20T18:40:23.923 に答える