条令|ORM|Symfony:可能与接口或多个实体有关



简单示例:我有两个用户Admin和Client(都实现了UserInterface(和Cart——a中的三个实体类。Admin和Client可以有自己的Cart。如何配置/解析Cart实体关系,使其具有返回Admin或Client用户的方法"getUser(("?

也许我可以在Cart中拥有列user_id和第二个具有用户实体名称的列(类似于DiscriminatorMapping的功能(?

class Admin implements UserInterface
{
/**
* @ORMId()
* @ORMGeneratedValue()
* @ORMColumn(type="integer")
*/
private $id;

/**
* @var Collection
* @ORMOneToMany(targetEntity="Cart", mappedBy="???")
*/
private $carts;
....
class Client implements UserInterface
{
/**
* @ORMId()
* @ORMGeneratedValue()
* @ORMColumn(type="integer")
*/
private $id;

/**
* @var Collection
* @ORMOneToMany(targetEntity="Cart", mappedBy="???")
*/
private $carts;
....
class Cart
{
/**
* @ORMId()
* @ORMGeneratedValue()
* @ORMColumn(type="integer")
*/
private $id;

/**
* @var UserInterface
* @ORMManyToOne(targetEntity="UserInterface", ???)
*/
private $user;
....

我尝试了这个Doctrine功能,也尝试了DiscriminatorMapping和复合键(由多列连接(选项,但没有成功。

有什么帮助吗?

我想你差不多到了。鉴别器映射可能是一种方法。但是,您需要将Client和Admin绑定到Parent类。所以考虑一下这个层次结构:

用户(父类(

  • 管理员(扩展用户(
  • 客户端(扩展用户(

然后在Cart实体中将关系绑定到User实体。

最新更新