php - Symfony 不会自动增加 id

标签 php mysql symfony

我有一个名为 cardb 的数据库,它由一个制造了一些汽车的 SQL 文件填充。它们的 ID 从 1 到 30 不等。当我尝试创建新汽车时,它第一次工作并创建了一辆 ID 为 0 的汽车,然后当它再次尝试时,它再次尝试使用 0 进行输入。

这里是错误

An exception occurred while executing 'INSERT INTO cars (Make, Model, TravelledDistance) VALUES (?, ?, ?)' with params ["fock", "fock", 320]:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY'

这是我的实体

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

}

它是自动生成的实体,具有自动增量注释。

可能是什么问题?

最佳答案

注解

 * @ORM\GeneratedValue(strategy="AUTO")

不会让 PHP 创建一个唯一的 ID。从插入语句可以看出,PHP 根本没有提供 ID 值。

该注释告诉 ORM 它是什么类型的列,但它取决于数据库来生成值。 You can check the documentation for more details.

根据您的代码看起来,您似乎是 used the console to generate the entity ,但我认为数据库没有正确执行 id 的事实意味着您手动创建了 cars 表,而不是使用 doctrine:schema:update,这是如果这是您需要/想要的方式,那很好,但是您必须更改表以使 id 列成为自动增量。

关于php - Symfony 不会自动增加 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47658501/

相关文章:

symfony - 如何应用名称存储在变量中的过滤器

doctrine-orm - 如何使用 Symfony2 中的选择表单字段指定传递的值

php - 自动在数据库表中创建条目(php/mysql)

javascript - 当我们使用 JavaScript 隐藏/显示时清除下拉列表和/或文本框内容 当它们被交替选择时

php - 如何在php中实现mysql compress()函数

php - Laravel 搜索多对多关系

validation - 如何检查提供的 CSRF token 在 Symfony2 中是否无效?

php - 在 PHP 中执行日期时间相关操作

php - 按属性值减少 WooCommerce 商品库存

mysql - 无法在查询中按上午/下午对时间(varchar 类型)进行排序