代码之家  ›  专栏  ›  技术社区  ›  nielsv

ManyToOne关系+如何双向使用

  •  0
  • nielsv  · 技术社区  · 10 年前

    我有两张这样的桌子:

    Users
        - UserID
        - Username
        - Password
        - ...
    
     Players
        - playerID
        - playerName
        - ...
        - User
    

    关系是 ManyToOne (见图片),这不是必需的。

    enter image description here

    我用Doctrine自动生成了我的实体。在我的玩家实体中,我有:

     /**
     * @var \NV\VolleyScoutBundle\Entity\Users
     *
     * @ORM\ManyToOne(targetEntity="NV\VolleyScoutBundle\Entity\Users")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="user_id", referencedColumnName="user_id")
     * })
     */
    protected $user;
    

    但我没有 $player 我的变量 用户实体 。我可以用什么方式添加这个?试图这样做,但给了我不同的错误。我想做的是在我的注册表格中添加一个球员表格。

    所以在我的RegisterType(=表单)中,我想添加 ->add('player', new PlayerType()) 。但在我的用户实体中没有$player变量是不可能的。

    我需要在我的用户实体中为$player设置什么类型的关系?

    1 回复  |  直到 10 年前
        1
  •  1
  •   Matzach    10 年前

    您必须在用户实体中添加注释。

    玩家中的Enity

    @ORM\OneToMany(targetEntity="Players", mappedBy="user")
    protected $player;
    

    在用户实体中:

    @ORM\ManyToOne(targetEntity="Users", inversedBy="player")
    @ORM\JoinColumn(name="user_id", referendecColumn="UserId")
    proteced $user;
    

    这只是草稿。您必须为目标实体编写完整的名称空间,如果存在错误,请更正错误。

    你可以在这里找到很多setail: Doctrine documentation - working with association

    表名尽量使用小写字母,因为linux下的MySQL不喜欢大写字母。 $player必须是ArrayCollection的实例