我在尝试将实体和关联实体持久存储到数据库时遇到以下异常。不知道我在做什么错在这里:Symfony:给定的类型实体无法添加到标识映射
例外:
The given entity of type 'AppBundle\Entity\User'
(AppBundle\Entity\[email protected]) has no
identity/no id values set. It cannot be added to the identity map.
实体:
/**
* @ORM\Entity
*/
class User
{
/**
* @ORM\Column(type="string")
*/
private $name;
/**
* @ORM\OneToOne(targetEntity="Address", inversedBy="user")
* @ORM\JoinColumn(name="address_id", referencedColumnName="id")
* @ORM\Id
*/
protected $address;
}
/**
* @ORM\Entity
*/
class Address
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
*/
private $id
/**
* @ORM\OneToOne(targetEntity="User", mappedBy="address", cascade={"all"}, fetch="LAZY")
*/
private $user;
}
实体创建:
$user = new User();
$address = new Address();
$address->setUser($user->setAddress($address));
$this->getDoctrine()->getManager()->persist($user);
$this->getDoctrine()->getManager()->persist($address);
$this->getDoctrine()->getManager()->flush();
您发布的代码似乎不显示User :: id? – Cerad
User :: address是主键和外键。 – Freid001
这不起作用。每个Doctrine实体都需要一个明确的id。 – Cerad