【发布时间】:2016-12-05 14:08:45
【问题描述】:
我是 Symfony 的初学者。我的问题是我尝试向我的基础 MySQL 添加值,问题是我有相同的 id,但我验证了我的实体并生成了值@ORM/GeneratedValues,我不明白我的错在哪里。
路由:
esprit_parc_AjoutVoiture:
path: /Ajout_voiture/
defaults: { _controller: ParcBundle:Voiture:add }
我的控制器:
public function addAction (Request $Request)
{
$Voiture = new Voiture();
$form = $this->createForm(VoitureType::class,$Voiture);
$form->handleRequest($Request);
if ($form->isValid())
{
$em=$this->getDoctrine()->getManager();
$em->persist($Voiture);
$em->flush();
return $this->redirect($this->generateUrl(
'esprit_parc_Affichage'
));
}
return $this->render(
'ParcBundle:Voiture:ajout.html.twig',
array('form'=>$form->createView()
));
}
}
实体Voiture:
<?php
namespace ParcBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Class voiture
* @package ParcBundle\Entity
* @ORM\Entity
* @ORM\Table(name="Voiture")
*/
class Voiture
{
/**
* @ORM\Column( type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
private $id;
/**
* @ORM\Column(type="string",length=255)
*
*/
private $Serie;
/**
* @ORM\Column(type="datetime",length=255)
*/
private $DateMiseCirculation;
/**
* @ORM\Column(type="string",length=255)
*/
private $Marque;
/**
* @ORM\ManyToOne(targetEntity="ParcBundle\Entity\Modele" )
* @ORM\JoinColumn(name="id", referencedColumnName="id");
*/
private $modele;
public function getId()
{
return $this->id;
}
public function setId($id)
{
$this->id = $id;
}
public function getModele()
{
return $this->modele;
}
public function setModele($modele)
{
$this->modele = $modele;
}
public function getSerie()
{
return $this->Serie;
}
public function setSerie($Serie)
{
$this->Serie = $Serie;
}
public function getDateMiseCirculation()
{
return $this->DateMiseCirculation;
}
public function setDateMiseCirculation($DateMiseCirculation)
{
$this->DateMiseCirculation = $DateMiseCirculation;
}
public function getMarque()
{
return $this->Marque;
}
public function setMarque($Marque)
{
$this->Marque = $Marque;
}
}
错误:
使用参数 ["2313", "2012-12-03 02:02:00" 执行 'INSERT INTO Voiture (serie, date_mise_circulation, marque, id) VALUES (?, ?, ?, ?)' 时发生异常", "sd", 1]:
SQLSTATE[23000]:违反完整性约束:1062 键“PRIMARY”的重复条目“1”
PS : 我有 id = "1" 的值,它应该自动增加 id。
[编辑]:类VoitureType:
<?php
namespace ParcBundle\Form;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class VoitureType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('Serie')
->add('DateMiseCirculation')
->add('Marque')
->add('modele', EntityType::class, array(
"class" => "ParcBundle:Modele",
"choice_label"=> "libelle"
))
->add("Ajouter",SubmitType::class);
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'ParcBundle\Entity\Voiture'
));
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'parcbundle_voiture';
}
}
【问题讨论】:
-
在您的
VoitureType中,是否有字段id? -
我用命令生成的,我会在这里粘贴 1 分钟
-
它假设一个自动生成我认为我不需要把它放在 voitureType
-
数据库中是否有当前架构?也许您的字段
id在 SQL 模式中没有primary key?尝试运行php bin/console doctrine:schema:update --force -
[Doctrine\DBAL\Exception\DriverException] 执行“ALTER TABLE modele CHANGE id id INT AUTO_INCREMENT NOT NULL”时发生异常:SQLSTATE[HY000]:一般错误:1833 无法更改列“id” :用于表'parc.voiture'的外键约束'FK_265FB893BF3967 50'