如何解决主义| ORM | Symfony:可能与接口或多个实体相关
简单的例子: 我有两个用户Admin和Client(都实现UserInterface)和Cart-三个实体类在同一位置。管理员和客户可以拥有自己的购物车。如何配置/解析购物车实体关系以使其具有方法“ getUser()”,该方法返回管理员或客户端用户?
也许我可以在Cart中有user_id列和带有用户实体名称的第二列(类似于DiscriminatorMapping可以做的事情)?
class Admin implements UserInterface
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @var Collection
* @ORM\OneToMany(targetEntity="Cart",mappedBy="???")
*/
private $carts;
....
class Client implements UserInterface
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @var Collection
* @ORM\OneToMany(targetEntity="Cart",mappedBy="???")
*/
private $carts;
....
class Cart
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @var UserInterface
* @ORM\ManyToOne(targetEntity="UserInterface",???)
*/
private $user;
....
我尝试了this教义功能,也尝试了DisciminatorMapping和复合键(由多列联接)选项,但是没有运气。
有帮助吗?
解决方法
我想你快到了。 DiscriminatorMapping可能是要走的路。但是,您需要将Client和Admin绑定到Parent类。因此,请考虑以下层次结构:
用户(父类)
- 管理员(扩展用户)
- 客户端(扩展用户)
然后在购物车实体中将关系绑定到User实体。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。