我正在寻找一种在重新启动我的装置后不增加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",
}
正如其他人提到的那样,这不是一个好方法。
如果您坚持要这样做,则需要截断这些表以便将其重置,然后,在将其添加到数据库时,该ID将再次从1开始。因此,使用ORMPurge可能是最好的方法。