Symfony - 创建新对象而不是更新

时间:2013-10-17 17:55:23

标签: php symfony doctrine-orm doctrine symfony-2.1

我有ApparelUser个类。每个user都可以有多个apparelsapparel只能属于一个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();

enter image description here

1 个答案:

答案 0 :(得分:1)

我的猜测是创建新用户的原因是因为您正在处理一个不受Doctrine管理的对象,并且可能允许级联创建。

所以我的建议是从会话中获取用户ID并尝试

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

然后致电,

$apparel->setUser($user);