有没有一种方法可以在Symfony 4中实现与教义2的多态关系

时间:2019-06-18 22:02:30

标签: php database symfony doctrine-orm polymorphic-associations

在基本级别上,我想拥有一个invoice实体,该实体可以具有and InvoiceTo字段。 InvoiceTo字段应与ManyToOne实体或IndividualCustomer实体具有CompanyCustomer关系。

到目前为止,所有读物都使我相信这是“教义继承映射”的一个案例,但这仅仅是因为我对到目前为止所发现的文档或很少讨论的博客没有任何意义。学说中的多态关系。

我想通过以下方式(如果可能的话)实现它,

// 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 :(得分:0)

为了使您的字段invoiceTo引用IndividualCustomer还是CompanyCustomer,一种解决方案是创建一个父类。假设CustomerIndividualCustomerCompanyCustomer的继承对象。 从那里,您的invoiceTo字段可以直接定位到Customer