我有一个名为cardb
的数据库,它由一个生成一些汽车的SQL文件填充。它们的ID从1到30开始。当我尝试创建新的Car时,它首次运行并创建一个id为0的汽车,然后当它再次尝试再次执行时它再次尝试使用0进行输入。
这是错误
使用params [“fock”,“fock”,320]执行'INSERT INTO cars(Make,Model,TravelledDistance)VALUES(?,?,?)'时发生异常:
SQLSTATE [23000]:完整性约束违规:1062键'PRIMARY'重复输入'0'
这是我的实体
/**
* Cars
*
* @ORM\Table(name="cars")
* @ORM\Entity(repositoryClass="AppBundle\Repository\CarsRepository")
*/
class Cars
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="Make", type="string", length=255)
*/
private $make;
/**
* @var string
*
* @ORM\Column(name="Model", type="string", length=255)
*/
private $model;
/**
* @var int
*
* @ORM\Column(name="TravelledDistance", type="bigint")
*/
private $travelledDistance;
/**
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Parts", inversedBy="cars")
* @ORM\JoinTable(
* name="PartCars",
* joinColumns={
* @ORM\JoinColumn(name="Part_Id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="Car_Id", referencedColumnName="id")
* })
*/
private $parts;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set make
*
* @param string $make
*
* @return Cars
*/
public function setMake($make)
{
$this->make = $make;
return $this;
}
/**
* Get make
*
* @return string
*/
public function getMake()
{
return $this->make;
}
/**
* Set model
*
* @param string $model
*
* @return Cars
*/
public function setModel($model)
{
$this->model = $model;
return $this;
}
/**
* Get model
*
* @return string
*/
public function getModel()
{
return $this->model;
}
/**
* Set travelledDistance
*
* @param integer $travelledDistance
*
* @return Cars
*/
public function setTravelledDistance($travelledDistance)
{
$this->travelledDistance = $travelledDistance;
return $this;
}
/**
* Get travelledDistance
*
* @return int
*/
public function getTravelledDistance()
{
return $this->travelledDistance;
}
/**
* @return mixed
*/
public function getParts()
{
return $this->parts;
}
}
它是自动生成的实体,具有自动增量注释。
可能是什么问题?
答案 0 :(得分:4)
注释
* @ORM\GeneratedValue(strategy="AUTO")
不会让PHP创建一个唯一的ID。您可以从insert语句中看到PHP根本没有提供ID值。
该注释告诉ORM它是什么类型的列,但它依赖于数据库来生成值。 You can check the documentation for more details.
根据您的代码看起来的方式,它显示为used the console to generate the entity,但我认为数据库没有正确执行id这一事实意味着您手动创建了cars
表而不是使用doctrine:schema:update
,如果你需要/想要这样做的话,这很好,但是你必须改变你的表以使id列成为一个自动增量。