Mysql Symfony2重复输入-但为什么?

Mysql Symfony2重复输入-但为什么?,mysql,symfony,entity,duplicates,Mysql,Symfony,Entity,Duplicates,我得到以下例外: 执行“插入到任务(任务标题、任务描述、任务优先级、任务类型、用户)值(?、、、、?、?)”时发生异常,参数为[“efswedfvgswde”、“ewdfwds”、“Normal”,14,13]: SQLSTATE[23000]:完整性约束冲突:密钥“UNIQ_505865978D93D649”的1062重复条目“13” 在此,我将表单类型插入数据库: $task = new Task(); $form = $this->createForm(new TaskType(),

我得到以下例外:

执行“插入到任务(任务标题、任务描述、任务优先级、任务类型、用户)值(?、、、、?、?)”时发生异常,参数为[“efswedfvgswde”、“ewdfwds”、“Normal”,14,13]:

SQLSTATE[23000]:完整性约束冲突:密钥“UNIQ_505865978D93D649”的1062重复条目“13”

在此,我将表单类型插入数据库:

$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;
这是我的任务实体中的字段用户:

/**
 * @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;

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

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

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

您的映射应如下所示:

您可以了解更多关于学说中的关联。

StackOverflow上也存在类似的问题。

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

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

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

您的映射应如下所示:

您可以了解更多关于学说中的关联。

StackOverflow上也存在类似的问题。

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

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

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

您的映射应如下所示:

您可以了解更多关于学说中的关联。

StackOverflow上也存在类似的问题。

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

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

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

您的映射应如下所示:

您可以了解更多关于学说中的关联。

StackOverflow也有类似的问题。

您似乎想要一个oneToMany而不是oneToOne。OneToOne意味着每个对象只能连接到另一个对象中的一个,当您尝试将两个(或更多)任务连接到一个用户时。现在我完全困惑了…我一个接一个地出现错误…--当我有两个任务时-任务ID 1和任务ID 2。任务ID 1具有用户ID 1,但任务ID 1也具有用户ID 2。任务Id 2只有用户Id 2。现在,我想在用户完成任务时将其添加到TaskDone中。所以我添加了TaskDone->ID1 |任务ID1 |用户ID1 |和ID2 |任务ID1 |用户ID2。因此,每个用户的任务都可以设置为已完成。那么这是欧尼托内吗?或者很多很多或者一个一个或者很多个?你似乎想要一个一个一个而不是一个一个一个。OneToOne意味着每个对象只能连接到另一个对象中的一个,当您尝试将两个(或更多)任务连接到一个用户时。现在我完全困惑了…我一个接一个地出现错误…--当我有两个任务时-任务ID 1和任务ID 2。任务ID 1具有用户ID 1,但任务ID 1也具有用户ID 2。任务Id 2只有用户Id 2。现在,我想在用户完成任务时将其添加到TaskDone中。所以我添加了TaskDone->ID1 |任务ID1 |用户ID1 |和ID2 |任务ID1 |用户ID2。因此,每个用户的任务都可以设置为已完成。那么这是欧尼托内吗?或者很多很多或者一个一个或者很多个?你似乎想要一个一个一个而不是一个一个一个。OneToOne意味着每个对象只能连接到另一个对象中的一个,当您尝试将两个(或更多)任务连接到一个用户时。现在我完全困惑了…我一个接一个地出现错误…--当我有两个任务时-任务ID 1和任务ID 2。任务ID 1具有用户ID 1,但任务ID 1也具有用户ID 2。任务Id 2只有用户Id 2。现在,我想在用户完成任务时将其添加到TaskDone中。所以我添加了TaskDone->ID1 |任务ID1 |用户ID1 |和ID2 |任务ID1 |用户ID2。因此,每个用户的任务都可以设置为已完成。那么这是欧尼托内吗?或者很多很多或者一个一个或者很多个?你似乎想要一个一个一个而不是一个一个一个。OneToOne意味着每个对象只能连接到另一个对象中的一个,当您尝试将两个(或更多)任务连接到一个用户时。现在我完全困惑了…我一个接一个地出现错误…--当我有两个任务时-任务ID 1和任务ID 2。任务ID 1具有用户ID 1,但任务ID 1也具有用户ID 2。任务Id 2只有用户Id 2。现在,我想在用户完成任务时将其添加到TaskDone中。所以我添加了TaskDone->ID1 |任务ID1 |用户ID1 |和ID2 |任务ID1 |用户ID2。因此,每个用户的任务都可以设置为已完成。那么这是欧尼托内吗?还是很多很多还是一个?
/**
 * @var User
 * @Assert\Type(type="Seotool\MainBundle\Entity\User")
 * @ORM\ManyToOne(targetEntity="User")
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
 */
protected $user;