tengo 2 tablas relacionadas de 1 a muchos, las cuales son orders y procedimientos, para lo cual quiero que al ingresar una order pueda ingresar varias filas en la tabla procedimientos.
Modelo Order
var $hasMany = array(
'Procedimiento' => array(
'className' => 'Procedimiento',
'foreignKey' => 'order_id',
'dependent' => false,
));
Modelo Procedmiento
var $belongsTo = array(
'Order' => array(
'className' => 'Order',
'foreignKey' => 'order_id',
'conditions' => '',
'fields' => '',
'order' => ''
));
Controller orders_controller
if (!empty($this->data)) {
$this->Order->create();
if ($this->Order->save($this->data)) {
$this->data['Procedimiento']['order_id'] = $this->Order->id;
$this->Procedimiento->saveAll($this->data);
$this->Session->setFlash(__('La orden fue registrada correctamente', true));
$this->Order->saveField('estado', 0);
$this->redirect(array('controller' => 'users','action' => 'admin'));
} else {
$this->Session->setFlash(__('La orden no pudo ser registrada, intente nuevamente', true));
}
}
Vista /orders/add.ctp
<?php echo $this->Form->create('Order', array('name' => 'order','id' => 'basicForm2', 'action' => 'add', 'class' => 'form-horizontal')) ?>
<?php echo $this->Form->hidden('created', array('value'=>date("Y-m-d"),'label' => false)); ?>
<?php echo $this->Form->input('nombre') ?>
<?php echo $this->Form->input('rut') ?>
<?php echo $this->Form->input('Procedimiento.0.nombre', array('label'=>'Procedimiento 1')); ?>
<?php echo $this->Form->input('Procedimiento.1.nombre', array('label'=>'Procedimiento 2')); ?>
<?php echo $this->form->end('guardar') ?>
Lo que sucede con este codigo, es que me agrega 2 campos en la tabla orders, y solo uno en la tabla procedimientos.
En la tabla orden me guarda los datos correctos, pero en la tabla procedimientos que posee un id, nombre, order_id
el id lo guarda correcto, el nombre en blanco y order_id ( como genera 2 ingresos en la tabla orders) me guarda el segudo id de los 2 ingresos.