0

私はクラスを持っApparelています。Userそれぞれuserが多くの を持つことができますapparels。そしてapparel、1つだけに属することができますUser

class Apparel
{
    /**
     * @ORM\ManyToOne(targetEntity="User", inversedBy="apparels", cascade={"persist"})
     * @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
     */
    private $user;    
}


class User 
{
    /**
     * @ORM\OneToMany(targetEntity="Apparel", mappedBy="user")
     */
    private $apparels;
}

問題は、更新時に新しいユーザーがデータベースに追加されることです。

  • コードの何が問題になっていますか?

これが私のコントローラーです

$user = $this->get('session')->get('user');
$apparel->setUser($user);
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($apparel);
$entityManager->flush();

ここに画像の説明を入力

4

1 に答える 1

1

私の推測では、新しいユーザーが作成される理由は、Doctrine によって管理されておらず、おそらくカスケード作成を許可しているオブジェクトを操作しているためです。

したがって、セッションからユーザー ID を取得して試してみることをお勧めします。

$user = $userRepository->find($userId) 

そして電話して、

$apparel->setUser($user);
于 2013-10-17T18:02:51.397 に答える