1

リレーションの保存に問題があります。ユーザーとプロファイルがあります。すべてのユーザーがプロファイルを持っているわけではないので、プロファイルがこの関係の所有者であると判断しました。しかし、ユーザーを作成するとき。ユーザーフォームとプロフィールフォームがあります。私は持っている

$user = new Entity\User();
$profile = new Entity\Profile();
$user->setProfile($profile);

私が持っているユーザーオブジェクト

/**
     * @ORM\OneToOne(targetEntity="My\InfoBundle\Entity\Profile",cascade={"persist", "remove"},  mappedBy="user")
     */
    protected $profile;

プロフィールで私が持っている

    /**
     * @ORM\OneToOne(targetEntity="My\UserBundle\Entity\User",   inversedBy="profile")
     * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
     */
    protected $user;

したがって、保存すると、user_id はプロファイル テーブルに保存されません。そして、私はユーザーとプロファイルの間に関係がありません。これを修正できますか? または、この関係で所有権を変更する必要があります。

4

1 に答える 1

0
class User {
    public function setProfile(Profile $profile) {
        $this->profile = $profile;
        $profile->setUser($this);
    }
}

mappedBy編集: OneToOne 関係の場合、 and を使用してはなりませんinversedBy

于 2013-10-07T07:45:16.177 に答える