我有這樣的schema.yml:獲取最新保存的表單數據的ID
SdrivingMaquina:
connection: doctrine
tableName: sdriving_maquina
actAs: [Timestampable]
columns:
idmaquina: { type: integer(8), fixed: false, unsigned: false, primary: true, autoincrement: true }
idempresa: { type: integer(4), fixed: false, unsigned: true, primary: true, autoincrement: false }
patente: { type: string(12), fixed: false, unsigned: false, primary: false, notnull: true, autoincrement: false }
relations:
Empresa: { local: idempresa, class: SdrivingEmpresa, type: one, foreignType: one, foreignAlias: MaquinaEmpresa, onDelete: CASCADE, onUpdate: CASCADE }
SdrivingMaquinaEmisor:
connection: doctrine
tableName: sdriving_maquina_emisor
actAs: [Timestampable]
columns:
idmaquinaemisor: { type: integer(8), fixed: false, unsigned: false, primary: true, autoincrement: true }
idmaquina: { type: integer(8), fixed: false, unsigned: false, primary: true, autoincrement: false }
idemisor: { type: integer(8), fixed: false, unsigned: false, primary: true, autoincrement: false }
relations:
SdrivingEmisor: { onDelete: CASCADE, local: idemisor, foreign: idemisor, type: one }
SdrivingMaquina: { onDelete: CASCADE, local: idmaquina, foreign: idmaquina, type: one }
這是形式configure()
方法有關:
public function configure() {
$this->current_user = sfContext::getInstance()->getUser()->getGuardUser();
unset($this['updated_at'], $this['created_at']);
$this->widgetSchema['idempresa'] = new sfWidgetFormInputHidden();
$id_empresa = $this->current_user->getSfGuardUserProfile()->getIdempresa();
$this->setDefault('idempresa', $id_empresa);
$this->widgetSchema['no_emisor'] = new sfWidgetFormDoctrineChoice(array('model' => 'SdrivingEmisor', 'add_empty' => 'Seleccione un Emisor', 'table_method' => 'fillChoice'));
$this->validatorSchema['idempresa'] = new sfValidatorPass();
$this->validatorSchema['no_emisor'] = new sfValidatorPass();
}
後,我想保存主要maquina
然後保存關係SdrivingMaquinaEmisor()
的數據,但不知道和沒有找到(經過一些谷歌和Stackoverflow研究)正確的方式來獲取最新的ID爲SdrivingMaquina
對象。
這是我在save()
方法正在做(在同一表格):
public function save($con = null) {
$new_machine = parent::save($con);
$relation = new SdrivingMaquinaEmisor();
$relation->setIdmaquina($new_machine->getIdmaquina());
$relation->setIdemisor($this->values['no_emisor']);
$relation->save();
return $new_machine;
}
但setIdmaquina()
所以它打破了我的申請,並導致約束錯誤從來沒有得到一個數值,可以任意點我在正確的方向?
千恩萬謝,幫助許多。現在讓我說出你看到的是什麼東西。首先,我不是這個項目背後的唯一一個人,其他人也工作得很好,不尊重良好的做法,也不知道他們是否瞭解Symfony,以便讓事情變得簡單,比如模式的一部分。他們創建了BD,然後我艱難地運行了'doctrine:build-schema'這個任務,因此架構的原因並不合適。另一方面,班級(形式和保存)屬於'SdrivingMaquina'。 – Reynier
不幸的是,我現在不能更改DB,所以我應該可以使用我所做的來做同樣的事情。我試圖做的最好:-(。對於'actions.class.php'的方法,我使用任務'doctrine:generate-module',因此它創建了基本的CRUD部分,我只需要添加對關係和是的,調整一些形式,因爲例如在這我沒有得到'Emisores'關係,我需要建立關係,你有什麼建議,然後考慮到我之前說過的嗎? – Reynier
@Reynier我加了一個例如基於模式......但我不知道它是否會工作 – 1ed