我有一个实体Employee
,其中的外键来自User
。
我正在使用FOSUserBundle。
我想在User
和Employee
之间实现独特的一对一关系。
我尝试添加UniqueEntity
批注,但出现以下错误:
“ Doctrine并未映射“用户”字段,因此无法验证其唯一性。”
我发现问题在于User
实体使用...
use FOS\UserBundle\Model\User as BaseUser;
...而不是...
use FOS\UserBundle\Entity\User as BaseUser;
但是我不知道我必须重写什么,因为捆绑中的这个实体不存在。
/**
* Employee
* @ORM\Table(name="employee")
* @ORM\Entity
* @UniqueEntity(
* fields={"User"},
* errorPath="User",
* message="This account is assigned"
* )
*/
class Employee {
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="User")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="user_id", referencedColumnName="id",unique=true)
* })
*/
private $myUser;
}
namespace App\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
public function __construct()
{
parent::__construct();
// your own logic
}
function getId() {
return $this->id;
}
function setId($id) {
$this->id = $id;
}
public function getUsername() {
return $this->username;
}
}
答案 0 :(得分:0)
在Employee
定义的@UniqueEntity
类中,您引用的是类名,而不是属性名 1}}。
注释的正确配置应为fields
,而不是fiels={"myUser"}
。
User