如何在实现固定装置后不自动增加ID?

问题描述 投票:0回答:1

我正在寻找一种在重新启动我的装置后不增加ID的方法。

我解释说,我制作了灯具,当我第一次运行它们时,id在例如1到6之间(正常),但是当我决定重新启动灯具时,id在7到12之间。但是我希望我的ID始终保持在1到6之间,因为我在代码中制作了一些东西,他们总是需要相同数量的ID。

ps:我的装置是通过Symfony 4和Api平台上的Alice Bundle生成的。

所以我试图像这样在固定装置中修复ID:

App\Entity\Camera:
    camera:
        id: 1
        parking: '@parking'
        type: big
    camera1:
        id: 2
        parking: '@parking'
        type: normal
    camera2:
        id: 3
        parking: '@parking'
        type: small
    camera3:
        id: 4
        parking: '@parking1'
        type: big
    camera4:
        id: 5
        parking: '@parking1'
        type: normal
    camera5:
        id: 6
        parking: '@parking1'
        type: small

App\Entity\Parking:
    parking:
        id: 1
        name: parking 1
    parking1:
        id: 2
        name: parking 2

并且在两个实体类中,我都删除了“ @ORM \ GeneratedValue()”,如:

/**
 * @Groups({"event"})
 * @ORM\Id()
 * 
 * @ORM\Column(type="integer")
 */
private $id;

但是当我这样做时,我会收到此错误消息:

  An error occurred while generating the fixture "parking" (App\Entity\Parking): Could not hydrate the property "id" of the object "parking" (class: App\Entity\Parking).  


In HydrationExceptionFactory.php line 85:

  Could not hydrate the property "id" of the object "parking" (class: App\Entity\Parking).  


In PropertyAccessor.php line 567:

  Could not determine access type for property "id" in class "App\Entity\Parking": Neither the property "id" nor one of the methods "addId()"/"removeId()", "setId()", "id()", "__set()" or "__call()" exi  
  st and have public access in class "App\Entity\Parking".

我可以帮忙吗?

编辑:例如:我有一个杰森(Json),而相机是另一个实体中的ManyToOne,当我发表文章时,我需要添加json“ / cameras / id_of_camera”,并且我希望所有ID都保持不变单元测试或其他。

{
    "label":"test",
    "camera": "/cameras/1",
}    
php symfony doctrine fixtures api-platform.com
1个回答
0
投票

正如其他人提到的那样,这不是一个好方法。

如果您坚持要这样做,则需要截断这些表以便将其重置,然后,在将其添加到数据库时,该ID将再次从1开始。因此,使用ORMPurge可能是最好的方法。

© www.soinside.com 2019 - 2024. All rights reserved.