-1

User エンティティと Profile エンティティの間に単純な OneToOne 関係を作成しようとしています。ここにコントローラがあります: http://pastie.org/5068108、 User エンティティ: http://pastie.org/5068124、および Profile エンティティ: http://pastie.org/5068131 しかし、私はいつもこの奇妙なエラーを受け取ります:

通知: /opt/lampp/htdocs/Test/vendor/doctrine-dbal/lib/Doctrine/DBAL/Statement.php 行 98 での配列から文字列への変換。

このエラーは、フォームを persist() しようとすると表示されます。

誰かが私を助けてくれませんか、私にとっては何の意味もないこのエラーに苦労しています。どうもありがとうございます。

4

2 に答える 2

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;
于 2012-10-16T15:17:11.117 に答える
1

User エンティティの $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 テスト

app/console doctrine:schema:update --force

編集: @ shima5 が指摘したように、JoinColumn アノテーションを追加するのを忘れていました。

于 2012-10-16T15:04:37.027 に答える