2

我正在构建一个 schema.yml,我正在尝试将外键约束添加到表 sf_guard_user。

但是,当我做学说:插入-sql(编辑:学说:build --all)时,我的表和 sf_guard_user 之间的链接不存在!我错过了什么吗?

我正在使用 mysql ( InnoDB ) 和 Symfony 1.4

这是我的 schema.yml 的示例:

Author:
  connection: doctrine
  tableName: ec_author
  actAs:
    Sluggable:
      fields: [name]
      unique: true
      canUpdate: false
  columns:
    sf_guard_user_id:
      type: integer
      fixed: false
      unsigned: false
      primary: true
      autoincrement: false
    name:
      type: string(30)
      fixed: false
      unsigned: false
      primary: false
      notnull: true
      autoincrement: false
    contents:
      type: string()
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
  relations:
      User:
        class: sfGuardUser
        foreignType: one
        local: sf_guard_user_id
        foreign: id

没有指向 sfGuardUser 的链接,即使它们在 schema.yml 中进行了描述: 替代文字 替代文字

4

3 回答 3

2

这个有效:

Author:
  connection: doctrine
  tableName: ec_author
  actAs:
    Sluggable:
      fields: [name]
      unique: true
      canUpdate: false
  columns:
    sf_guard_user_id:
      type: integer
      fixed: false
      unsigned: false
      primary: false
      autoincrement: false
    name:
      type: string(30)
      fixed: false
      unsigned: false
      primary: false
      notnull: true
      autoincrement: false
    contents:
      type: string()
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false
  relations:
      User:
        class: sfGuardUser
        foreignType: one
        local: sf_guard_user_id
        foreign: id
        foreignAlias: author

sf_guard_user_id 是外键,那么它不能是主键。所以我 primary: true改为primary: false.

于 2010-09-21T15:16:47.090 回答
1

您还应该重建模型和 sql。尝试运行:

symfony doctrine:build --all

这将破坏所有现有数据。如果您不希望这样,则必须编写迁移。

于 2010-09-14T21:44:34.867 回答
1

类名需要与您在架构文件中打开相应表时指定的名称相同。

因此,例如,您正在使用:

relations:
    User:
      class: sfGuardUser
      foreignType: one

此处的类名必须与 sfGuardUser 表的声明相匹配。只要确保它们相同。有时,它可以声明为 sf_guard_user。

如果没问题,您可以尝试在关系条目中添加更多定义:

relations:
    User:
      class: sfGuardUser
      foreignType: one
      local: sf_guard_user_id
      foreign: sf_guard_user_id
于 2010-09-21T11:16:23.180 回答