【问题标题】:Update the ID of a model in symfony在 symfony 中更新模型的 ID
【发布时间】:2011-02-03 18:49:37
【问题描述】:

我目前正在使用 symfony admin-generator 来操作数据库。该数据库已经创建并正在使用中,它与通常设置的 symfony 数据库所做的不同之处之一是使用 varchar 作为主键,而不是 symfony 使用整数作为所有主键的方法。

我遇到的问题是能够在表单中编辑和更新此主键。问题是,当我尝试编辑密钥时,表单会抛出错误并显示“无效”。我可以假设,错误来自新 PK 与旧 PK 不匹配的事实。我想我有这些选择:

  1. 删除旧模型,新建一个并保存。

  2. 不允许他们编辑 ID。他们将不得不删除模型并重新创建它。

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

  4. 更改数据库架构,使模型具有自增整数 PK。然后为之前的 PK 使用唯一的 varchar 索引。

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

我根本不喜欢选项 2,而且我认为我实际上更喜欢数字 4。我认为 4 是最简单的方法并且可以做到,但我至少想知道是否可以实施数字 1未来参考。

【问题讨论】:

  • 为什么有可编辑的 PK?他们存储了哪些信息(用户可编辑)?
  • 这个模型在这种情况下是一个类别。 PK 是一个简短的描述性 slug。例如,Category 可能命名为“Sports & Recreation”,但 PK 可能类似于“sports”。它用于防止重复类别。
  • 如果可以选择,最好使用整数主键列,并在可能发生重复的情况下对类别添加唯一约束。

标签: forms symfony1 model


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多