在关联映射的此页面上,manthetomy部分中有一个示例。但是我不知道哪个实体(组或用户)是拥有方。

http://docs.doctrine-project.org/en/2.0.x/reference/association-mapping.html#many-to-many-bidirectional

我也把代码放在这里

<?php
/** @Entity */
class User
{
    // ...

    /**
     * @ManyToMany(targetEntity="Group", inversedBy="users")
     * @JoinTable(name="users_groups")
     */
    private $groups;

    public function __construct() {
        $this->groups = new \Doctrine\Common\Collections\ArrayCollection();
    }

    // ...
}

/** @Entity */
class Group
{
    // ...
    /**
     * @ManyToMany(targetEntity="User", mappedBy="groups")
     */
    private $users;

    public function __construct() {
        $this->users = new \Doctrine\Common\Collections\ArrayCollection();
    }

    // ...
}

我是否像这样阅读此注释:
通过组映射用户,因此组是进行连接管理的实体,因此是拥有方?

另外,我已经在文档中阅读了此内容:
For ManyToMany bidirectional relationships either side may be the owning side (the side  that defines the @JoinTable and/or does not make use of the mappedBy attribute, thus using   a default join table).

这让我认为,由于在该实体中定义了JoinTable批注,因此User将是所有者。

最佳答案


User实体是所有者。您在用户中具有组的关系:

/**
 * @ManyToMany(targetEntity="Group", inversedBy="users")
 * @JoinTable(name="users_groups")
 */
private $groups;

从上面看,$groups var包含与此用户相关联的所有组,但是,如果您注意到属性定义,则$groups var的的名称与mappedBy值的相同,即(mappedBy =“groups”),就像您做的那样:
/**
 * @ManyToMany(targetEntity="User", mappedBy="groups")
 */
private $users;

mappedBy是什么意思?

关于php - 原则2 doc示例中的拥有侧和反向侧是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13346233/

10-10 14:12