-1

我正在尝试在我的用户和个人资料实体之间创建一个简单的 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 行。

当我尝试坚持()我的表单时会出现此错误。

有人可以帮助我吗,我正在努力解决这个对我来说毫无意义的错误。非常感谢你。

4

2 回答 2

1

您的用户实体中的 $profile 属性应该是:

/**
* @ORM\OneToOne(targetEntity="\Test\ProfileBundle\Entity\Profile", mappedBy="user")
* @JoinColumn(name="profile_id", referencedColumnName="id")
*/
private $profile;

您必须在 Profile 实体中添加以下内容:

/**
* @ORM\OneToOne(targetEntity="\Test\UserBundle\Entity\User", mappedBy="profile")
*/
private $user;

之后,应用更改:

应用程序/控制台原则:生成:实体测试

应用程序/控制台原则:架构:更新 --force

已编辑:正如@shima5 指出的那样,我忘记添加 JoinColumn 注释。

于 2012-10-16T15:04:37.027 回答
1

在 User.php 中:

   /**
     * @OneToOne(targetEntity="Test\ProfileBundle\Entity\Profile")
     * @JoinColumn(name="profile_id", referencedColumnName="id")
     */
    private $profile;

这是一个单向关联。

您不能单独使用 mappedBy="user",因为它是双向的,您需要像这样在 Profile 中添加 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;
于 2012-10-16T15:17:11.117 回答