У меня есть класс пользователь и двое детей-классы Prestataire а также : Новичок.
Я сделал картографическую дискриминацию.
Класс User.php
namespace Annuaire\AnnuaireBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use DateTime;
use Doctrine\Common\Collections\ArrayCollection;
use \Doctrine\ORM\Mapping as ORM;/**
* @ORM\Table()
* @ORM\Entity(repositoryClass="UserRepository")
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="type_user", type="string")
* @ORM\DiscriminatorMap({"admin" = "User", "membre" = "Membre", "prestataire" = "Prestataire"})
*/
class User extends BaseUser
{
const Type_USER = 'admin';
const Type_PRESTATAIRE = 'prestataire';
const Type_MEMBRE = 'membre';public function __construct() {
parent::__construct();
$this->typeUser = User::Type_USER;
$this->dateInscr = new DateTime();
$this->confInscr = false;
$this->banni = false;
$this->nmbEssais = null;
$this->images = new ArrayCollection();
}
....
function getTypeuser() {
return $this->typeUser;
}
function setTypeuser($typeUser) {
$this->typeUser = $typeUser;
}
Класс Prestataire.php
namespace Annuaire\AnnuaireBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="Annuaire\AnnuaireBundle\Entity\PrestataireReposito ry")
*/
class Prestataire extends User
{
public function __construct() {
$this->typeUser = User::Type_PRESTATAIRE;
$this->stages = new ArrayCollection();
$this->promos = new ArrayCollection();
$this->categories = new ArrayCollection();
$this->favorites = new ArrayCollection();
parent::__construct();
}
Класс Membre.php
namespace Annuaire\AnnuaireBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
*/
class Membre extends User
{
public function __construct() {
$this->typeUser = User::Type_MEMBRE;
$this->notes = new ArrayCollection();
$this->favorites = new ArrayCollection();
parent::__construct();
}
Когда пользователь входит в систему, он выбирает один из двух типов пользователя. Таким образом, параметр типа отправляется по URL Регистр / prestataire или же зарегистрироваться /: Новичок.
И я не знаю, как я могу установить тип в базе данных с помощью FOSUserBundle.
Задача ещё не решена.
Других решений пока нет …