我正在构建一个schema.yml,我正在尝试将外键约束添加到表sf_guard_user。
但是,当我做doctrine:insert-sql(edit:doctrine: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中有描述:
答案 0 :(得分: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
。
答案 1 :(得分:1)
你也应该重建模型和sql。尝试运行:
symfony doctrine:build --all
这将破坏所有现有数据。如果您不想这样,则必须编写迁移。
答案 2 :(得分: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