我有一些表格的M:N设置。这是MySQL Workbench的ERD截图:
我使用proyectos
任务生成了centros
,unidades
和doctrine:generate-admin
的模块,但现在我遇到了问题:我需要添加unidades
centros
形式,那些应该在unidades_has_centros
表保存n:m关系。我把它放在CentrosForm
:
public function configure() {
$this->widgetSchema['unidad'] = new sfWidgetFormDoctrineChoice(array('model' => 'Unidades', 'add_empty' => 'Seleccione una unidad', 'multiple' => true));
$this->validatorSchema['unidad'] = new sfValidatorPass();
}
然后显示控件但是当我保存数据时,没有任何内容保存到unidades_has_centros
表。这是我的schema.yml
(使用doctrine:generate-schema
任务生成):
Centros:
connection: doctrine
tableName: centros
columns:
id:
type: integer(4)
fixed: false
unsigned: false
primary: true
autoincrement: true
descripcion:
type: string(250)
fixed: false
unsigned: false
primary: false
notnull: true
autoincrement: false
relations:
ProyectosHasCentros:
local: id
foreign: centros_id
type: many
UnidadesHasCentros:
local: id
foreign: centros_id
type: many
Cliente:
connection: doctrine
tableName: cliente
columns:
id:
type: integer(4)
fixed: false
unsigned: false
primary: true
autoincrement: true
nombre:
type: string(45)
fixed: false
unsigned: false
primary: false
notnull: true
autoincrement: false
fecha_registro:
type: timestamp(25)
fixed: false
unsigned: false
primary: false
notnull: true
autoincrement: false
pais:
type: string(45)
fixed: false
unsigned: false
primary: false
notnull: true
autoincrement: false
relations:
Proyectos:
local: id
foreign: cliente
type: many
Proyectos:
connection: doctrine
tableName: proyectos
columns:
id:
type: integer(4)
fixed: false
unsigned: false
primary: true
autoincrement: true
nombre:
type: string(150)
fixed: false
unsigned: false
primary: false
notnull: true
autoincrement: false
pais:
type: string(45)
fixed: false
unsigned: false
primary: false
notnull: false
autoincrement: false
estado:
type: integer(1)
fixed: false
unsigned: false
primary: false
default: '0'
notnull: true
autoincrement: false
cliente:
type: integer(4)
fixed: false
unsigned: false
primary: true
autoincrement: false
relations:
Cliente:
local: cliente
foreign: id
type: one
ProyectosHasCentros:
local: id
foreign: proyectos_id
type: many
ProyectosHasCentros:
connection: doctrine
tableName: proyectos_has_centros
columns:
proyectos_has_centros_id:
type: integer(4)
fixed: false
unsigned: false
primary: true
autoincrement: true
proyectos_id:
type: integer(4)
fixed: false
unsigned: false
primary: true
autoincrement: false
proyectos_cliente:
type: integer(4)
fixed: false
unsigned: false
primary: true
autoincrement: false
centros_id:
type: integer(4)
fixed: false
unsigned: false
primary: true
autoincrement: false
relations:
Proyectos:
local: proyectos_id
foreign: id
type: one
Centros:
local: centros_id
foreign: id
type: one
Unidades:
connection: doctrine
tableName: unidades
columns:
id:
type: integer(4)
fixed: false
unsigned: false
primary: true
autoincrement: true
descripcion:
type: string(250)
fixed: false
unsigned: false
primary: false
notnull: true
autoincrement: false
relations:
UnidadesHasCentros:
local: id
foreign: unidades_id
type: many
UnidadesHasCentros:
connection: doctrine
tableName: unidades_has_centros
columns:
unidades_has_centros_id:
type: integer(4)
fixed: false
unsigned: false
primary: true
autoincrement: true
unidades_id:
type: integer(4)
fixed: false
unsigned: false
primary: true
autoincrement: false
centros_id:
type: integer(4)
fixed: false
unsigned: false
primary: true
autoincrement: false
relations:
Unidades:
local: unidades_id
foreign: id
type: one
Centros:
local: centros_id
foreign: id
type: one
有什么建议吗?
答案 0 :(得分:0)
您还应该覆盖表单的保存方法。类似的东西:
public function save(){
$object = parent::save($con);
UnidadesHasCentrosPeer::saveItems($this->values['unidad'], $object);
}
在saveItem方法中,您应该定义创建UnidadesHasCentros对象的逻辑。