Forms 在symfony中更新模型的ID

Forms 在symfony中更新模型的ID,forms,symfony1,model,Forms,Symfony1,Model,我目前正在使用symfony管理生成器来操作数据库。数据库已经创建并正在使用中,它与通常设置的symfony数据库不同的一点是使用varchar作为主键,而不是symfony对所有主键使用int的方法 我遇到的问题是能否在表单中编辑和更新此主键。问题是,当我试图编辑密钥时,表单抛出一个错误并说无效。我可以假设,这个错误来自新PK与旧PK不匹配的事实。我想我有以下选择: 删除旧模型,创建新模型并保存 不允许他们编辑ID。他们将不得不删除模型,然后重新创建它 不允许他们制作或编辑ID,而是从属性推断

我目前正在使用symfony管理生成器来操作数据库。数据库已经创建并正在使用中,它与通常设置的symfony数据库不同的一点是使用varchar作为主键,而不是symfony对所有主键使用int的方法

我遇到的问题是能否在表单中编辑和更新此主键。问题是,当我试图编辑密钥时,表单抛出一个错误并说无效。我可以假设,这个错误来自新PK与旧PK不匹配的事实。我想我有以下选择:

删除旧模型,创建新模型并保存

不允许他们编辑ID。他们将不得不删除模型,然后重新创建它

不允许他们制作或编辑ID,而是从属性推断ID

更改数据库体系结构,使模型具有自动递增整数PK。然后对上一个PK使用唯一的varchar索引

现在我考虑一下,数字3将是理想的,因为模型作为一个名称字段,可以很容易地从中推断出一个ID。但是,当他们更新名称时,这仍然会导致1中出现问题


我一点也不喜欢第二种选择,我想我实际上更喜欢第四种。我认为4是最简单的方法,也是可以做到的,但我想至少知道1号是否可以实现,以供将来参考。

根据您的评论回复,我将重构数据库。我会创建一个自动递增整数PK,并在slug列上创建一个唯一的索引。

为什么有可编辑的PK?他们存储哪些用户可编辑的信息?本例中的模型是一个类别。PK是一个简短的、描述性的段塞。例如,该类别可能被命名为体育与娱乐,然而,PK将类似于体育。它用于防止类别重复。如果是选项,则最好使用整数主键列,并在类别上添加唯一约束(如果可能出现重复)。