Symfony1 使用sfDoctrineGuardPlugin的schema.yml
我正在构建一个schema.yml,并试图向表sf_guard_user添加外键约束 但是,当我执行doctrine:insert sql(编辑:doctrine:build--all)时,我的表和sf_guard_用户之间的链接就不存在了!我错过什么了吗 我正在使用mysql(InnoDB)和Symfony 1.4 下面是我的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
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的主键。它是自动生成的(如果您没有显式声明主键)。