У меня очень простой вопрос. В настоящее время я использую метод Doctrine2 findAll()
после метода getRepository
, и у меня есть простая настройка отношений OneToOne
(Manufacturers
имеет поле address_id
, которое ссылается на Addresses
, основные вещи). Я пытаюсь заполнить таблицу одним полем из Manufacturer
, а остальные поля - данными из ассоциированного Address
.Метод Doctrine2 findAll() не захватывает связанные данные?
Я делаю это, на мой взгляд код:
<?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();
мне нужно каким-то образом указать доктрину, что я хочу, чтобы захватить связанные с ними данные, а также делать?
Спасибо! На самом деле я нашел аналогичный вопрос и изменил свои классы соответственно, теперь он работает! – celestialorb
Будьте осторожны с ленивой загрузкой. Несмотря на то, что с объектом легко справиться с объектом, возможно, вы выдаете несколько запросов. Я бы предложил сократить ваш журнал запросов и убедиться, что вы оптимизируете, уменьшив количество запросов, избегая ленивой загрузки и заставляя Doctrine вытаскивать все данные одновременно. –
Nice аддон Майк. В большинстве случаев вы хотите определить связь oneToOne как нетерпеливую, потому что вы, вероятно, будете иметь дело с соответствующими данными. Таким образом вы будете выдать один запрос. –