2014-07-03 75 views
4

我正在使用FOSUserBundle,我需要構建用戶配置文件。這是我做過什麼:實體上的「城市化」列的重複定義

創建用戶類和BaseUser作爲FOSUser文檔說

namespace Sunahip\UserBundle\Entity; 

use FOS\UserBundle\Model\User as BaseUser; 
use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity 
* @ORM\Table(name="fos_user") 
*/ 
class User extends BaseUser 
{ 

    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ORM\OneToOne(targetEntity="Profile", mappedBy="user") 
    */ 
    protected $profile; 

    /** 
    * @ORM\ManyToMany(targetEntity="Sunahip\UserBundle\Entity\Group") 
    * @ORM\JoinTable(name="fos_user_user_group", 
    *  joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")}, 
    *  inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")} 
    *) 
    */ 
    protected $groups; 

} 

創建個人檔案實體

namespace Sunahip\UserBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use FOS\UserBundle\Model\User as BaseUser; 

/** 
* @ORM\Entity 
* @ORM\Table(name="profile") 
*/ 
class Profile extends BaseUser 
{ 

    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ORM\Id 
    * @ORM\OneToOne(targetEntity="User", inversedBy="profile") 
    * @ORM\JoinColumn(name="user_id", referencedColumnName="id") 
    */ 
    protected $user; 

    /** 
    * @ORM\Column(name="register_type", type="smallint", length=1) 
    */ 
    protected $register_type; 

    /** 
    * @ORM\Column(name="rif", type="string", length=25) 
    */ 
    protected $rif; 

    /** 
    * @ORM\Column(name="ci", type="string", length=25) 
    */ 
    protected $ci; 

    /** 
    * @ORM\Column(name="firstname", type="string", length=25) 
    */ 
    protected $firstname; 

    /** 
    * @ORM\Column(name="lastname", type="string", length=25) 
    */ 
    protected $lastname; 

    /** 
    * @ORM\Column(name="state", type="string", length=150) 
    */ 
    protected $state; 

    /** 
    * @ORM\Column(name="city", type="string", length=150) 
    */ 
    protected $city; 

    /** 
    * @ORM\Column(name="town", type="string", length=150) 
    */ 
    protected $town; 

    /** 
    * @ORM\Column(name="urbanization", type="string", length=150) 
    */ 
    protected $urbanization; 

    /** 
    * @ORM\Column(name="urbanization", type="string", length=150) 
    */ 
    protected $street; 

    /** 
    * @ORM\Column(name="aparment", type="string", length=150) 
    */ 
    protected $aparment; 

    /** 
    * @ORM\Column(name="aparment_no", type="string", length=150) 
    */ 
    protected $aparment_no; 

    /** 
    * @ORM\Column(name="reference", type="string", length=250) 
    */ 
    protected $reference; 

    /** 
    * @ORM\Column(name="zipcode", type="string", length=250) 
    */ 
    protected $zipcode; 

    /** 
    * @ORM\Column(name="fax", type="string", length=250) 
    */ 
    protected $fax; 

    /** 
    * @ORM\Column(name="local_phone", type="string", length=250) 
    */ 
    protected $local_phone; 

    /** 
    * @ORM\Column(name="movil_phone", type="string", length=250) 
    */ 
    protected $movil_phone; 

    /** 
    * @ORM\Column(name="alt_email", type="string", length=250) 
    */ 
    protected $alt_email; 

    /** 
    * @ORM\Column(name="alt_email", type="string", length=250) 
    */ 
    protected $website; 

    public function getId() 
    { 
     return $this->id; 
    } 

    public function setUser(User $user) 
    { 
     $this->user = $user; 
    } 

    public function getUser() 
    { 
     return $this->user; 
    } 

    public function setRegisterType($register_type) 
    { 
     $this->register_type = $register_type; 
    } 

    public function getRegisterType() 
    { 
     return $this->register_type; 
    } 

    public function setRif($rif) 
    { 
     $this->rif = $rif; 
    } 

    public function getRif() 
    { 
     return $this->rif; 
    } 

    public function setCI($ci) 
    { 
     $this->ci = $ci; 
    } 

    public function getCI() 
    { 
     return $this->ci; 
    } 

    public function setFirstname($firstname) 
    { 
     $this->firstname = $firstname; 
    } 

    public function getFirstname() 
    { 
     return $this->firstname; 
    } 

    public function setLastname($lastname) 
    { 
     $this->lastname = $lastname; 
    } 

    public function getLastname() 
    { 
     return $this->lastname; 
    } 

    public function setState($state) 
    { 
     $this->state = $state; 
    } 

    public function getState() 
    { 
     return $this->state; 
    } 

    public function setCity($city) 
    { 
     $this->city = $city; 
    } 

    public function getCity() 
    { 
     return $this->city; 
    } 

    public function setTown($town) 
    { 
     $this->town = $town; 
    } 

    public function getTown() 
    { 
     return $this->town; 
    } 

    public function setUrbanization($urbanization) 
    { 
     $this->urbanization = $urbanization; 
    } 

    public function getUrbanization() 
    { 
     return $this->urbanization; 
    } 

    public function setStreet($street) 
    { 
     $this->street = $street; 
    } 

    public function getStreet() 
    { 
     return $this->street; 
    } 

    public function setAparment($aparment) 
    { 
     $this->aparment = $aparment; 
    } 

    public function getAparment() 
    { 
     return $this->aparment; 
    } 

    public function setAparmentNo($aparment_no) 
    { 
     $this->aparment_no = $aparment_no; 
    } 

    public function getAparmentNo() 
    { 
     return $this->aparment_no; 
    } 

    public function setReference($reference) 
    { 
     $this->reference = $reference; 
    } 

    public function getReference() 
    { 
     return $this->reference; 
    } 

    public function setZipcode($zipcode) 
    { 
     $this->zipcode = $zipcode; 
    } 

    public function getZipcode() 
    { 
     return $this->zipcode; 
    } 

    public function setFax($fax) 
    { 
     $this->fax = $fax; 
    } 

    public function getFax() 
    { 
     return $this->fax; 
    } 

    public function setLocalPhone($local_phone) 
    { 
     $this->local_phone = $local_phone; 
    } 

    public function getLocalPhone() 
    { 
     return $this->local_phone; 
    } 

    public function setMovilPhone($movil_phone) 
    { 
     $this->movil_phone = $movil_phone; 
    } 

    public function getMovilPhone() 
    { 
     return $this->movil_phone; 
    } 

    public function setAltEmail($alt_email) 
    { 
     $this->alt_email = $alt_email; 
    } 

    public function getAltEmail() 
    { 
     return $this->alt_email; 
    } 

    public function setWebsite($website) 
    { 
     $this->website = $website; 
    } 

    public function getWebsite() 
    { 
     return $this->website; 
    } 

} 

現在延伸,我想通過運行命令doctrine:schema:validate來驗證該實體,並且出現此錯誤:

[Doctrine\ORM\Mapping\MappingException] Duplicate definition of column 'urbanization' on entity 'Sunahip\UserBundle\Entity\Profile' in a field or discriminator column mapping.

我的問題:

  1. 我不知道什麼是錯的,也不知道是什麼錯誤意味着是我第一次得到這個錯誤。
  2. 我不知道如果我建立的用戶配置文件以正確的方式我的意思是,如果我應該BaseUser或用戶擴展

我能給予一定的幫助嗎?建議?想法?

+1

粘貼您的個人檔案實體的其餘部分。最簡單的解決方案就像在錯誤消息 - 重複定義城市化列 –

+0

@TomaszMadeyski你是對的我想改變兩個屬性的列名稱,我已經修復,但現在錯誤是這['Doctrine \ ORM \ Mapping \ MappingException] 實體「Sunahip \ UserBundle \ Entity \ Profile」具有複合標識符,但使用的不是手動分配(Identity,Sequence)的ID生成器。這不支持.',爲什麼? – ReynierPM

+0

,因爲您的實體定義 –

回答

3

你(有)這裏基本上有兩種probles:

  1. 重複的urbanization列名的地方有哪些需要被刪除。只允許一個同名的列

  2. 重複@ORM\Id註釋在您的Profile實體中。從$user中刪除一個,因爲它不是您的Id