外键学说2实体关联不设置值(Doctrine 2 entity association does n

2019-09-21 01:14发布

我遇到的问题与主义2实体关联。 我有一个用户实体和机构实体。 一个机构可以采用多个用户(实体被简化为只显示我的问题)

用户实体

/**
 * @Entity
 * @Table(name="users")
 **/
class User
{
    /**
     * @Id
     * @Column(type="integer")
     * @GeneratedValue
     * @var integer
     **/
    protected $id;

    /**
     * @ManyToOne(targetEntity="Agency", inversedBy="users"})
     * @JoinColumn(name="agency_id", referencedColumnName="id")
     * @var Agency
     */
    protected $agency;
}

机构实体

/**
 * @Entity
 * @Table(name="agencies")
 **/
class Agency
{
    /**
     * @Id
     * @Column(type="integer")
     * @GeneratedValue
     * @var integer
     **/
    protected $id;

    /**
     * @OneToMany(targetEntity="User", mappedBy="agency", cascade={"all"})
     * @JoinColumn(name="id", referencedColumnName="agency_id")
     * @var User[]
     */
    protected $users;


    /**
     * Add a user to the agency
     *
     * @param User $user
     * @return void
     */
    public function addUser(User $user) {

        $this->users[] = $user;
    }
}

当我现在用下面的代码与用户一起建立一个机构,原则不设置导致一个MySQL contraint错误,用户的agency_id不能为空的用户agency_id。

// $em is the Doctrine EntityManager
$agency = new Agency;
$user = new User;
$agency->addUser($user);
$em->persist($agency);
$em->flush();

到目前为止,我发现做主义的唯一途径为用户设置的agency_id被分配机构用户另外,以将用户添加到该机构。 在我的ORM的理解,它应该已经设置agency_id当用户在格兰机构的用户收集和它的beeing保存。

$user->agency = $agency;
$agency->addUser($user);

这有什么错或丢失我的注释/元数据?

Answer 1:

我发现学说2文档中的内容:

只发到关联的逆侧的变化被忽略。 请务必更新双向关联两侧(或至少拥有方,从学说的观点)

正如我的情况下,拥有一边是用户,我必须更新它。 原则1是能够自动管理它......太糟糕了。



文章来源: Doctrine 2 entity association does not set value for foreign key