如何解决一种形式-加到两个表中
| 我如何在Symfony 1.4和Doctrine中制作一种表格,将数据添加到两个表中? 一个表和模块的默认Symfony生成形式。在什么时候我可以对其进行编辑并添加自己的字段? http://www.symfony-project.org/jobeet/1_4/Doctrine/zh/03 产生。 我想例如添加具有新类别的字段。# config/doctrine/schema.yml
JobeetCategory:
actAs: { Timestampable: ~ }
columns:
name: { type: string(255),notnull: true,unique: true }
JobeetJob:
actAs: { Timestampable: ~ }
columns:
category_id: { type: integer,notnull: true }
(...)
expires_at: { type: timestamp,notnull: true }
relations:
JobeetCategory: { onDelete: CASCADE,local: category_id,foreign: id,foreignAlias: JobeetJobs }
此表单仅添加ID JobeetJob。我如何也可以添加到JobeetCategory?
解决方法
您可以在JobeetJob表单中嵌入JobeetCategory关系。这将使您能够创建工作和类别。寻找sfForm类的`embedRelation()̀方法。
, 您应该在模型中覆盖save方法(在JobeetJob模型中可以这样说)。并将两个模型保存在事务中。下面我保存到产品和复合产品表。但不要忘记,保存方法应具有2个功能:插入和更新
public function save(Doctrine_Connection $conn = null){
try {
$conn->beginTransaction();
$isNew = $this->isNew();
parent::save($conn); #Save Product
$modelName = $this->moduleArray[$moduleName];
$productId = $this->getId();
if($isNew){ #CREATE new Composite Product and set Product ID and Module Name to it.
$cp = new CompositeProduct();
$cp->setRelatedModelID($productId);
$cp->setRelatedModelName($modelName);
$cp->setTitle($this->getTitle());
$cp->save();
}else{# UPDATE the Composite Product
$query = Doctrine_Core::getTable(\'CompositeProduct\')
->createQuery(\'cp\')
->where(\'cp.relatedmodelname = ?\',$modelName)
->andWhere(\'cp.relatedmodelid = ?\',$productId);
$cp = $query->fetchOne();
$cp->setTitle($this->getTitle());
$cp->save();
}
$conn->commit();
}catch(Doctrine_Exception $e){
$conn->rollback();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。