更新
这就是我的用户表看起来像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;
目前,我在我的用户实体中添加了ManyToOne
和JoinColumn
此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,但我似乎无法弄清楚如何从我的用户实体内的实体获取该数据。这对我来说似乎也不对?不确定这是否是最佳做法。
谢谢,
答案 0 :(得分:0)
通过UserInterface
,您的User
获得角色关系。这是ManyToMany
关系。换句话说,您不需要自己实例化它,而是实现接口并更新数据库。
有关界面的更多信息及其后果可在以下网址找到:http://symfony.com/doc/current/cookbook/security/entity_provider.html