与Doctrine2和Symfony2的一对一关系



我正在尝试在我的用户和配置文件实体之间创建一个简单的一对一关系,这是我的控制器: 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 行。

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

有人可以帮我吗,我正在与这个对我来说毫无意义的错误作斗争。非常感谢。

用户实体中的$profile属性应为:

/**
* @ORMOneToOne(targetEntity="TestProfileBundleEntityProfile", mappedBy="user")
* @JoinColumn(name="profile_id", referencedColumnName="id")
*/
private $profile;

您必须在配置文件实体中添加以下内容:

/**
* @ORMOneToOne(targetEntity="TestUserBundleEntityUser", mappedBy="profile")
*/
private $user;

之后,应用更改:

应用/控制台 策略:生成:实体测试

应用/控制台 策略:架构:更新 --强制

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

In User.php :

   /**
     * @OneToOne(targetEntity="TestProfileBundleEntityProfile")
     * @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="TestProfileBundleEntityProfile", mappedBy="user")
     */
    private $profile;

相关内容

  • 没有找到相关文章

最新更新