Есть ли способ реализовать полиморфную связь с доктриной 2 в Symfony 4 - PullRequest
0 голосов
/ 19 июня 2019

На базовом уровне я хочу иметь сущность invoice, которая может иметь поле InvoiceTo.Поле InvoiceTo должно иметь отношение ManyToOne либо к сущности IndividualCustomer, либо к сущности CompanyCustomer.

Все прочитанное до сих пор заставило меня поверить, что это случай для Doctrine Inheritance Mapping, но я просто не в состоянии разобраться с документацией или очень немногими блогами, которые я нашел такдалеко что обсуждают полиморфные отношения в учении.

Я хотел бы добиться этого, как показано ниже (, если это вообще возможно ),

// First Example, were the invoice is sent to an IndividualCustomer
$individualCustomer = $this->getDoctrine()
        ->getRepository(individualCustomer::class)
        ->find($id);

$invoiceTo = new InvoiceTo($individualCustomer);

$invoice = new Invoice();
$invoice->setAmt(100.00);
$invoice->setInvoiceTo($invoiceTo);


// Second Example, were the invoice is sent to CompanyCustomer
$companyCustomer = $this->getDoctrine()
        ->getRepository(companyCustomer::class)
        ->find($id);

$invoiceTo = new InvoiceTo($companyCustomer);

$invoice = new Invoice();
$invoice->setAmt(100.00);
$invoice->setInvoiceTo($invoiceTo);

Я был бы очень признателен за любой указатель на то же самое.Вся документация почему-то кажется очень загадочной.Цените свое время и помощь.

1 Ответ

0 голосов
/ 20 июня 2019

Чтобы сделать ваше поле invoiceTo ссылающимся на IndividualCustomer или CompanyCustomer, необходимо создать родительский класс;скажем Customer, от которого наследуются IndividualCustomer и CompanyCustomer.Оттуда ваше поле invoiceTo может быть непосредственно нацелено на Customer.

...