mysql - Symfony2 重复条目 - 但为什么呢?

标签 mysql symfony entity duplicates

我得到以下异常:

An exception occurred while executing 'INSERT INTO tasks (task_title, task_description, task_priority, task_type, user) VALUES (?, ?, ?, ?, ?)' with params ["efswedfgvswde", "ewdfweds", "Normal", 14, 13]:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '13' for key '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;

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

来自用户实体的 ID:

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

最佳答案

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

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

提供的代码表明关联是单向(用户实体中没有$tasks 字段)所以只需要ManyToOne 从任务映射实体。

您的映射应如下所示:

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

您可以在 Doctrine 中了解更多关于关联的信息 here .
StackOverflow 上也有类似的问题 here .

关于mysql - Symfony2 重复条目 - 但为什么呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24766530/

相关文章:

mysql - 如何在并发环境下正确锁定MYSQL表

mysql查询在一列中显示行数据

mysql - 复制的 mysql 结构中的 RENAME TABLE 有哪些风险?

mysql - 不使用 join 和 union 从多个表中选择

php - 管理 Controller api 数据调用的好模式

php - Symfony/Doctrine Dateinterval(持续时间)如何将其存储在数据库中

entity - DDD 中的一切都是值对象

java - 使用 ORM 将对象持久化到数据库

forms - Symfony2更改嵌入式表单的字段选项

drupal 8 BaseFieldDefinition entity_reference 带条件