Set Type for Doctrine
The recommended way to install is through Composer:
composer require jungle-bay/doctrine-set-type
<?php
namespace Acme\Types;
use Doctrine\DBAL\Types\SetType;
class RolesType extends SetType {
const NAME = 'roles_type';
const ROLE_SUPER_USER_VALUE = 'ROLE_SUPER_USER';
const ROLE_ADMIN_VALUE = 'ROLE_ADMIN';
const ROLE_USER_VALUE = 'ROLE_USER';
const ROLE_NONE_VALUE = 'ROLE_NONE';
protected function getValue() {
return array(
self::ROLE_SUPER_USER_VALUE,
self::ROLE_ADMIN_VALUE,
self::ROLE_USER_VALUE,
self::ROLE_NONE_VALUE
);
}
public function getName() {
return self::NAME;
}
}
<?php
namespace Acme\Entities;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity()
*
* @ORM\Table(
* name = "users"
* )
*/
class User {
/**
* @ORM\Column(
* type = "roles_type"
* )
*/
private $roles;
}
Do not forget to register the type!
\Doctrine\DBAL\Types\TypeType::addType(RolesType::NAME, RolesType::class); /** @var \Doctrine\DBAL\Connection $conn */ $conn->getDatabasePlatform()->registerDoctrineTypeMapping('roles', RolesType::NAME);
This bundle is under the MIT license. See the complete license in the file: here.