FOSUserBundle鉴别器映射注册

时间:2016-01-18 19:53:54

标签: php symfony fosuserbundle discriminator

我有一个班级用户和两个孩子班级 Prestataire Membre 。 我做了一个映射歧视。

Class 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;
    }

Class 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();
    }

Class 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 register / prestataire register / membre 发送。 而且我不知道如何通过FOSUserBundle在DataBase中设置Type。

0 个答案:

没有答案