我正在尝试在我的用户和个人资料实体之间创建一个简单的OneToOne关系,这是我的控制器:http://pastie.org/5068108,我的用户实体:http://pastie.org/5068124和我的个人资料实体:http://pastie.org/5068131但我总是得到这个奇怪的错误:
注意:/opt/lampp/htdocs/Test/vendor/doctrine-dbal/lib/Doctrine/DBAL/Statement.php第98行中的数组到字符串转换。
当我试图坚持()表单时会出现此错误。
有人可以帮助我吗,我为这个错误而斗争,这对我来说毫无意义。非常感谢你。
答案 0 :(得分:1)
您的用户实体中的$ profile属性应为:
/**
* @ORM\OneToOne(targetEntity="\Test\ProfileBundle\Entity\Profile", mappedBy="user")
* @JoinColumn(name="profile_id", referencedColumnName="id")
*/
private $profile;
您必须在个人资料实体中添加以下内容:
/**
* @ORM\OneToOne(targetEntity="\Test\UserBundle\Entity\User", mappedBy="profile")
*/
private $user;
之后,应用更改:
app / console doctrine:generate:entities Test
app / console doctrine:schema:update --force
已编辑:我忘了添加JoinColumn注释,正如@ shima5指出的那样。
答案 1 :(得分:1)
在User.php中:
/**
* @OneToOne(targetEntity="Test\ProfileBundle\Entity\Profile")
* @JoinColumn(name="profile_id", referencedColumnName="id")
*/
private $profile;
这是一种单向联想。
你不能单独使用mappedBy =“user”,因为它是双向的,你需要在你的个人资料中添加inversedBy =“profile”,如下所示:
/**
* @OneToOne(targetEntity="User", inversedBy="profile")
* @JoinColumn(name="user_id", referencedColumnName="id")
*/
private $user;
用户:
/**
* @OneToOne(targetEntity="Test\ProfileBundle\Entity\Profile", mappedBy="user")
*/
private $profile;