Orm Doctrine2,从另一个实体创建一个实体?

Orm Doctrine2,从另一个实体创建一个实体?,orm,doctrine-orm,Orm,Doctrine Orm,我正在使用Doctine2\ORM,我有en实体,和 当用户注册时,我需要创建具有用户id的角色记录,并将其id返回给用户,然后创建用户记录,我如何为此类工作组织注释?您可以在\u构造期间向用户添加默认角色,然后将关联标记为级联={“persist”} 构造函数看起来像: public function __construct() { $this->role = new RoleLink(); } 我也不认为角色需要保留对用户本身的引用,但如果需要,请记住,在原则2 ORM中,您

我正在使用Doctine2\ORM,我有en实体,和


当用户注册时,我需要创建具有用户id的角色记录,并将其id返回给用户,然后创建用户记录,我如何为此类工作组织注释?

您可以在
\u构造期间向用户添加默认角色,然后将关联标记为
级联={“persist”}

构造函数看起来像:

public function __construct()
{
    $this->role = new RoleLink();
}

我也不认为角色需要保留对用户本身的引用,但如果需要,请记住,在原则2 ORM中,您通过将相关对象分配给关联属性本身(而不是标识符!)来处理关联。首先,我不认为您希望在用户注册时创建角色条目。我认为预先定义这些(以及它们各自的访问权限)是明智的

一旦你注意到了这一点,我想你所追求的明显关系应该是用户的多个持久性级联集

/**
 * @Table(name="role")
 */
class Role
{

    // possibly define your roles accesses as another realtion or hard code?
}

/**
 * @Table(name="user")
 */
class User
{
    // id + any other definitions

    /**
     * @var Entities\Role $role
     * @ManyToOne(targetEntity="Role", cascade={"persist"})
     */
    private $role;
}

当我创建RoleLink时,我需要将用户id传递给它,并且用户id在uuu构造$this->role=new\Application\Entity\RoleLink($this->getId())上为空;你为什么需要身份证?您可以通过
$this->role=new RoleLink($this)
直接传递给用户。仅供参考,BjyAuthorize使用的角色提供程序使用对数据库表的直接访问,而不是使用实体(正如它应该做的那样)。我建议您使用一个自定义角色提供程序,它只从经过身份验证的用户中提取角色。不要试图通过设置标识符或让角色意识到用户来绕过它:那是错误的。我会尽快解决BjyAuthorize本身的问题。要创建RoleLink,我需要将user_id传递给它,并且在构造函数中user_id仍然为空,我相信user应该是您的所有者。实例化用户,然后向其传递所需的角色对象/id引用。