Я это schema.yml:Получить идентификатор из последних сохраненных данных формы
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()
, но не знаете и не нашли (после некоторых исследований Google и Stackoverflow) правильный способ получить последний идентификатор объекта 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()
никогда не получает значение, так это разбивает мое приложение и вызвать ошибку CONSTRAINT, может любой точке меня в правильном направлении?
большое спасибо за ваш ответ, помочь много. Теперь позвольте мне сказать, что было сделано, как вы видите. Во-первых, я не единственный, кто стоит за этим проектом, другие тоже работают и не уважают хорошие практики, а также не знаю, хорошо ли они знакомы с Symfony, чтобы упростить задачу, например, часть схемы. Они создают BD, а затем я жестко выполнил задачу 'doctrine: build-schema', и поэтому причина в том, что схема не в порядке. С другой стороны, класс (форма и сохранение) принадлежит 'SdrivingMaquina'. – Reynier
К сожалению, я не могу изменить БД в этот момент, чтобы я мог сделать то же самое, что и я. Я пытаюсь сделать все возможное :-(Для методов 'actions.class.php' я использую задачу' doctrine: generate-module', поэтому он создает основную часть CRUD, мне просто нужно добавить поддержку для отношения и да, настроить некоторые формы, потому что, например, в этом я не получил отношения «Emisores», и мне нужно было построить отношение, каковы ваши предложения, с учетом того, что я сказал раньше? – Reynier
@Reynier Я добавил пример на основе схемы ... но я не знаю, будет ли это работать или нет. – 1ed