简单示例:我有两个用户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实体。