Symfony1 使用sfDoctrineGuardPlugin的schema.yml

Symfony1 使用sfDoctrineGuardPlugin的schema.yml,symfony1,doctrine,sfdoctrineguard,Symfony1,Doctrine,Sfdoctrineguard,我正在构建一个schema.yml,并试图向表sf_guard_user添加外键约束 但是,当我执行doctrine:insert sql(编辑:doctrine:build--all)时,我的表和sf_guard_用户之间的链接就不存在了!我错过什么了吗 我正在使用mysql(InnoDB)和Symfony 1.4 下面是我的schema.yml的一个示例: Author: connection: doctrine tableName: ec_author actAs: S

我正在构建一个schema.yml,并试图向表sf_guard_user添加外键约束

但是,当我执行doctrine:insert sql(编辑:doctrine:build--all)时,我的表和sf_guard_用户之间的链接就不存在了!我错过什么了吗

我正在使用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中有描述:
您还应该重建模型和sql。尝试运行:

symfony doctrine:build --all

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

类名必须与在架构文件中打开相应表时指定的名称相同

例如,您正在使用:

relations:
    User:
      class: sfGuardUser
      foreignType: one
此处的类名必须与sfGuardUser表的声明匹配。只要确保它们是一样的。有时,它可以声明为sf_guard_用户

如果可以,您可以尝试向关系条目添加更多定义:

relations:
    User:
      class: sfGuardUser
      foreignType: one
      local: sf_guard_user_id
      foreign: sf_guard_user_id
这一个有效:

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

您使用的是什么数据库引擎?Manu,这个关系是否存在于BaseAuthor类中?有打电话到$this->hasOne吗('sfGuardUser…'?不,不,这个->BaseAuthorDo中有一个我需要修改插件的模式,或者我正在做的是工作吗?+1 insert sql只插入schema.sql文件。如果你不重新生成它,它将不工作。即使使用build--所有链接都不存在。我应该在插件中更改schema.yml吗?当你说链接时不存在,它们缺失在哪里?在SQL中缺失了吗(即从sf_guard_user_id到sf_guard_user表没有FK)?BaseAuthor是否添加了从sf_guard_user_id到user的关系?在SQL中缺失了。此外,我无法使用配置文件表中的数据为sfguarduser(作者)创建夹具感谢您的回答,我已经添加了您的建议,但链接仍然不存在:(您能够填充表吗?当您尝试添加不存在的FK时是否会导致FK错误?顺便说一下,在您的表ec_author中会有一个名为id的主键。它是自动生成的(如果您没有显式声明主键)。