RoleInterface теперь устарела и подлежит удалению в 4.0, так что вы можете сделать то же самое, как сказал Жену Magloire, но быть уверенным в продлитьSymfony\Component\Security\Core\Role\Role
Вот пример моей роли субъекта.
<?php
namespace ExampleCoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\Role\Role;
use Symfony\Component\Validator\Constraints as Assert;
/**
* ExampleRole
*
* @ORM\Table(name="EXAMPLE_ROLE")
* @ORM\Entity
*/
class ExampleRole extends Role
{
/**
* @var integer
*
* @ORM\Column(name="ID", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="SEQUENCE")
*/
private $id;
/**
* @var string
*
* @Assert\NotBlank()
* @Assert\Length(
* min = 9,
* max = 100,
* minMessage = "Role name must be at least {{ limit }} characters long",
* maxMessage = "Role name cannot be longer than {{ limit }} characters"
*)
* @ORM\Column(name="ROLE_NAME", type="string", length=255, nullable=false, unique=true)
*
*/
private $roleName;
/**
* @var string
*
* @Assert\NotBlank()
* @Assert\Choice({"Y","N"})
*
* @ORM\Column(name="GRANTABLE", type="string", length=1, nullable=false)
*/
private $grantable;
/**
* @var \DateTime
*
* @ORM\Column(name="CREATED_ON", type="datetime", nullable=false)
*/
private $createdOn;
//...and so on with whatever else you want to save.
public function __construct($roleName = null)
{
parent::__construct($roleName);
}
По умолчанию роли хранятся как столбец в пользовательской таблице. Это фактически сериализованный массив, поэтому использование может иметь несколько ролей. Конечно, вы можете сделать свою собственную реализацию и иметь таблицу ролей пользователей, если вы считаете, что она необходима. – Cerad
[Эта ссылка] (http://stackoverflow.com/questions/39198846/symfony3-how-to-store-user-roles-in-database) может помочь вам – mapmalith