我正在使用FOSUserBundle,我需要构建用户配置文件。这就是我所做的:
创建User类并从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]重复定义 实体'Sunahip \ UserBundle \ Entity \ Profile'中的列'城市化' 字段或鉴别器列映射。
我的问题:
我可以在这里给一些帮助吗?建议?想法?
答案 0 :(得分:3)
你这里基本上有两个问题:
需要删除某处的重复urbanization
列名称。只允许使用一个具有相同名称的列
@ORM\Id
实体中的重复Profile
注释。从$user
中删除一个,因为它不是您的Id