我需要花费很多时间才能找到将外键保存在母表中的解决方案。 我正在尝试使用与symfony 1.4的嵌入关系(我也有ahDoctrineEasyEmbeddedRelationsPlugin)。
当我在这里阅读symfony文档时
http://www.symfony-project.org/more-with-symfony/1_4/en/06-Advanced-Forms
架构是:
Product:
columns:
name: { type: string(255), notnull: true }
price: { type: decimal, notnull: true }
ProductPhoto:
columns:
product_id: { type: integer }
filename: { type: string(255) }
caption: { type: string(255), notnull: true }
relations:
Product:
alias: Product
foreignType: many
foreignAlias: Photos
onDelete: cascade
embedRelation看起来像:
// lib/form/doctrine/ProductForm.class.php
public function configure()
{
// ...
$this->embedRelation('Photos');
}
在我的情况下,我不能做其他事情,相反,产品有关系键,我有类似的东西:
Product:
columns:
name: { type: string(255), notnull: true }
price: { type: decimal, notnull: true }
photoid: { type: integer }
ownerid: { type: integer }
relations:
Photo:
local: photoid
foreign: id
type: one
Owner:
local: ownerid
foreign: id
type: one
Photo:
columns:
id : { type: integer }
filename: { type: string(255) }
caption: { type: string(255), notnull: true }
owner:
columns:
id : { type: integer }
firstname: { type: string(255) }
lastname: { type: string(255), notnull: true }
和embedRelation:
// lib/form/doctrine/ProductForm.class.php
public function configure()
{
// ...
$this->embedRelation('Photo');
$this->embedRelation('Owner');
}
并且没有与要在表单中更新的名称或价格等产品相关的小部件,而只有来自照片和所有者表的信息。
当我保存新表单时,照片和所有者对象将保存在表格中,并且会使用序列创建ID。问题是产品永远不会更新。 photoid和ownerid仍然保持为null。 它就像嵌入式表单Photo和Owner在根表单后保存。
在这种情况下是否可以使用embedrelation? 那么当根表单保存在processForm中时,在Product表中保存外键的正确方法是什么? 什么是诀窍,请求帮助。
答案 0 :(得分:0)