我的架构如:
架构:
article:
id: ~
title: { type: VARCHAR, size: '255', required: true }
created_at: { type: TIMESTAMP, required: true }
updated_at: { type: TIMESTAMP, required: true }
article_data:
id: ~
article_data: { type: BLOB, required: true }
article_filename: { type: VARCHAR, size: '255'}
article_id: { type: INTEGER, required: true, foreignTable: article, foreignReference: id, onDelete: cascade }
所以,在我的文章管理模块中,我想显示article_data小部件,这是一个文件上传。
一切都很好。但是,在将上载的文件保存到服务器时,article_id字段为空。
有没有办法可以获得文章的ID并将其保存为article_data表的article_id?
由于
编辑:
我想我需要覆盖saveEmbeddedForm()方法,但我不确定我需要做什么。
有人可以为saveEmbeddedForm()的某些代码提供帮助吗?
由于
答案 0 :(得分:3)
我不知道Propel,但是在Doctrine你可以做这样的事情:
class ArticleForm extends BaseForm
{
public function configure()
{
parent::configure();
$form = new sfForm();
$datas = $this->getObject()->getDatas();
foreach ($datas as $index => $data)
$form->embedForm($index, new ArticleDataForm($data));
$this->embedForm('dataForms', $form);
}
public function saveEmbeddedForm($con = null, $forms = null)
{
$dataForms = $this->getEmbeddedForm('dataForms')->getEmbeddedForms();
foreach ($dataForms as $dataForm)
$dataForm->getObject()->setArticle($this->getObject());
parent::saveEmbeddedForm($con, $forms);
}
}