Symfony按关联加载数据?

时间:2015-07-09 09:33:23

标签: php symfony doctrine-orm

更新

这就是我的用户表看起来像var_dump数据

private 'id' => int 2
private 'username' => string 'admin' (length=5)
private 'password' => string '$..........' (length=60)
private 'firstname' => string 'test1' (length=5)
private 'surname' => string 'test2' (length=5)
private 'email' => string 'test@test.com' (length=13)
private 'accessLevelsId' => int 1 

在我的AccessLevel表中设置如下,

id  level       leveltitle 
1   ROLE_ADMIN  Admin
2   ROLE_USER   User

因此,当我查看我的用户时,'accesslevel_id'只会让我的用户设置为正确的角色。我只是不知道该怎么做?

好的我对Symfony的世界很新,但是我已经使用了很多CakePHP,所以我对MVC有了很好的理解。但是当你在CakePHP中烘焙时,它会消失,并将所有相关的ID映射到主键上。

Symfony似乎没有这样做,或者更多的学说似乎没有做到比设定基本的吸气剂更多。 setter方法。

所以我正在尝试构建用户登录。到目前为止,它会起作用,因为我在getRoles()中设置了'ROLE'以返回正确的角色,例如admin / user。

但是我的用户表中有access_levels_id,我希望它从中加载ROLE。但我已经遍布Symfony网站,无法弄清楚如何做到这一点。

/**
 * @var integer
 *
 *  @ORM\ManyToOne(targetEntity="AccessLevels")
 *  @ORM\Column(name="access_levels_id", type="integer", nullable=false)
 *  @ORM\JoinColumn(name="access_levels_id", referencedColumnName="id")
 */
private $accessLevelsId;

目前,我在我的用户实体中添加了ManyToOneJoinColumn此ID。我还将此添加到我的AccessLevels实体

/**
* @ORM\OneToMany(targetEntity="Users", mappedBy="accesslevels")
*/
public $users;

public function __contruct() {
    $this->users = new ArrayCollection();
}

我在两个实体中添加了所有需要的“使用”语句,或者至少我认为我已经。

我将用户登录后,使用角色设置'admin',在'user'实体上执行var_dump。但是这只是显示private 'accessLevelsId' => int 1而不是'ROLE'这意味着要去取(登录时)。

所以我想(请告诉我,如果这是错的)我应该在我的用户实体中创建一个新函数,这样我就可以获取我需要的数据,然后将该数据返回给我的getRole() function

public function getAccessRole() {
    $GetUsersAccessID = $this->getAccessLevelsId();

    $TestMe = new AccessLevels();

   // $TestMe2 = $TestMe->find(1);

    var_dump( $GetUsersAccessID );
    var_dump( $TestMe );
    //var_dump( $TestMe2 );
}

所以$GetUsersAccessID 返回正确的数据,即该用户的访问级别ID,但我似乎无法弄清楚如何从我的用户实体内的实体获取该数据。这对我来说似乎也不对?不确定这是否是最佳做法。

谢谢,

1 个答案:

答案 0 :(得分:0)

通过UserInterface,您的User获得角色关系。这是ManyToMany关系。换句话说,您不需要自己实例化它,而是实现接口并更新数据库。

有关界面的更多信息及其后果可在以下网址找到:http://symfony.com/doc/current/cookbook/security/entity_provider.html