/**
* @ORM\Entity
* @ORM\Table(name="tb_payment_info")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="type", type="integer")
* @ORM\DiscriminatorMap({
* "0" = "PaymentInfoPaypal",
* "1" = "PaymentInfoSkrill",
* })
*/
abstract class AbstractPaymentInfo
{
/**
* @ORM\Column(name="payment_info_id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
}
/**
* @ORM\Entity
* @ORM\Table(name="tb_payment_info_paypal")
*/
class PaymentInfoPaypal extends AbstractPaymentInfo
{
}
/**
* @ORM\Entity
* @ORM\Table(name="tb_payment_info_skrill")
*/
class PaymentInfoSkrill extends AbstractPaymentInfo
{
}
Мой Payout класс содержит колонку payment_info_id, значения которой берутся из таблицы tb_payment_info (общей для PaymentInfoPaypal и PaymentInfoSkrill):
/**
* @ORM\Entity
* @ORM\Table(name="tb_payout")
*/
class Payout
{
/**
* @var AbstractPaymentInfo
*
* @ORM\ManyToOne(targetEntity="AbstractPaymentInfo")
* @ORM\JoinColumn(name="payment_info_id", referencedColumnName="payment_info_id")
*/
private $paymentInfo;
}
Когда я пытаюсь получить любой Payout entity, его paymentInfo автоматически инициализируется с помощью отдельных запросов, которые следуют сразу после основного запроса:
$this->getEntityManager()->getRepository('TuoPayBundle:Payout')->find(255);
Получаю 2 запроса к базе: первый для Payout и второй для его paymentInfo
$this->getEntityManager()->getRepository('TuoPayBundle:Payout')->findBy(['id'=>[255,256] ]);
Получаю 3 запроса: первый для Payout а второй и третий для инициализации paymentInfo
Как получить lazy load?