当前位置: 首页 > 知识库问答 >
问题:

Symfony2重复输入-但为什么?

谭云瀚
2023-03-14

我得到以下例外:

执行INSERT INTO任务(task_title、task_description、task_priority、task_type、用户)时发生异常 (?, ?, ?, ?, ?)'带有参数["efSwedfgvswde","ewdfweds","正常",14,13]:

SQLSTATE[23000]:完整性约束冲突: 1062重复条目'13'的关键'UNIQ_505865978D93D649'

在这里,我将我的表单键入数据库:

$task = new Task();
$form = $this->createForm(new TaskType(), $task);

$form->handleRequest($request);

if($form->isValid()):

        $em = $this->get('doctrine')->getManager();
        $em->persist($task);
        $em->flush();

        return  $this->redirect($this->generateUrl('add_task'));

endif;

这是我的任务实体中的字段USER:

/**
 * @var User
 * @Assert\Type(type="Seotool\MainBundle\Entity\User")
 * @ORM\OneToOne(targetEntity="User")
 * @ORM\JoinColumn(name="user", referencedColumnName="id")
 */
protected $user;

为什么不可能在表“Task”中添加两个具有相同字段“user”值的条目?实际上,在我的数据库中有一个用户值为13的条目。当我在数据库中添加另一个user=13的条目时,我得到了这个异常。为什么?我还没有定义,那个用户是唯一的?!

这是来自用户实体的ID:

/**
 * @var integer $id
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id()
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

共有1个答案

赵雪峰
2023-03-14

如@Qoop所述,您有错误的关联映射。

一个用户可以有多个任务,这从用户实体转换为一个多任务关联
许多任务可能属于一个用户-这将从任务实体转换为多个一个关联。

提供的代码表明关联是单向的(用户实体中没有$tasks字段),因此只需要任务实体中的多个映射。

你的映射应该是这样的:

/**
 * @var User
 * @Assert\Type(type="Seotool\MainBundle\Entity\User")
 * @ORM\ManyToOne(targetEntity="User")
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
 */
protected $user;

你可以在这里了解更多关于关联的教义
这里也有类似的StackOverflow问题。

 类似资料: