Hola a todos. Les paso a comentr mi problema.
Tengo un modelo Paquetes que este tiene muchos Aereo (que a su vez tiene
una linea aerea) y muchos Traslados(que a su vez tiene un mayorista). Las
relaciones entre los modelos estan correctamente hechas tantos los hasMany
en la parte de producto como los belongsTo en la parte de los aereos y los
productos. El tema es que cuando quiero hacer un saveAll o saveMany, el de
los aereos anda perfecto pero el de los armados no, y si bien los datos no
son los mismos esta exactamente igual con sus diferencias intrinsecas.
Ademas como cosa mas curiosa aun, en el beforeSaved del os aereos anda todo
bien, pero en el de los traslados me da un error que me dice que no estan
definidos los idices.
Dejo toda la informaicon posible.
- Modelo de los traslados
<?php
App::uses('User', 'Model');
class Traslado extends AppModel {
var $name = 'Traslado';
var $belongsTo = array('Paquete','Proveedore','User');
public function beforeSave($options = array()) {
$this->data['Traslado']['concepto'] =
strtoupper($this->data[$this->alias]['concepto']);
$this->data['Traslado']['liquidacion'] =
strtoupper($this->data[$this->alias]['liquidacion']);
$this->data['Traslado']['user_id'] = AuthComponent::user('id');
if($this->data[$this->alias]['costo'] ==
'')$this->data[$this->alias]['costo'] = 0;
if($this->data[$this->alias]['tipocambio'] ==
'')$this->data[$this->alias]['tipocambio'] = 1;
if($this->data[$this->alias]['precio'] ==
'')$this->data[$this->alias]['precio'] = 0;
if($this->data[$this->alias]['tipocambioventa'] ==
'')$this->data[$this->alias]['tipocambioventa'] = 0;
if($this->data[$this->alias]['personas'] ==
'')$this->data[$this->alias]['personas'] = 0;
return true;
}
}
?>
- Modelo de los aereos
<?php
App::uses('User', 'Model');
class Aereo extends AppModel {
var $name = 'Aereo';
var $belongsTo = array('Paquete','Linea','User');
public function beforeSave($options = array()) {
$this->data[$this->alias]['concepto'] =
strtoupper($this->data[$this->alias]['concepto']);
$this->data[$this->alias]['numerovuelo'] =
strtoupper($this->data[$this->alias]['numerovuelo']);
$this->data[$this->alias]['user_id'] = AuthComponent::user('id');
if($this->data[$this->alias]['costo'] ==
'')$this->data[$this->alias]['costo'] = 0;
if($this->data[$this->alias]['tipocambio'] ==
'')$this->data[$this->alias]['tipocambio'] = 1;
if($this->data[$this->alias]['precio'] ==
'')$this->data[$this->alias]['precio'] = 0;
if($this->data[$this->alias]['tipocambioventa'] ==
'')$this->data[$this->alias]['tipocambioventa'] = 0;
if($this->data[$this->alias]['personas'] ==
'')$this->data[$this->alias]['personas'] = 0;
return true;
}
}
?>
Estructura del $this->request->data de ambos modelos
Array
(
[Aereo] =>
Array
(
[0] =>
Array
(
[Linea] => Array ( [nombre] => 12 )
[concepto] => 12
[numerovuelo] => 12
[tipomoneda] => $
[tipocambio] =>
[costo] => 12
[emision] => 0
[tipomonedaventa] => $
[tipocambioventa] =>
[precio] => 12
[personas] => 121
)
)
)
Array
(
[Traslado] =>
Array
(
[0] =>
Array
(
[Proveedore] => Array ( [nombre] => )
[concepto] => 123
[tipomoneda] => $
[tipocambio] =>
[costo] => 123
[liquidacion] => 123
[tipomonedaventa] => $
[tipocambioventa] =>
[precio] => 123
[personas] => 123
)
)
)
si bien hay un solo registro por cada modelo la idea es que sean varios
- Accion add de los aereos
for ($i = 0; $i < count($this->request->data['Aereo']); $i++) {
/* * *************
Agrego y vinculo la linea aerea******** */
$this->Linea->create(array('nombre' =>
$this->request->data['Aereo'][$i]['Linea']['nombre']));
$this->Linea->save();
$linea = $this->Linea->find('first',
array('conditions' => array('Linea.nombre' =>
$this->request->data['Aereo'][$i]['Linea']['nombre'])));
$this->request->data['Aereo'][$i]['linea_id'] =
$linea['Linea']['id'];
$this->request->data['Aereo'][$i]['paquete_id']
= $paquete;
}
/* *
******************************************************* */
$this->Aereo->saveAll($this->request->data['Aereo'])
Accion add de los traslados
/* * ************ Agrego y vinculo los
armados**************** */
for ($i = 0; $i <
count($this->request->data['Traslado']); $i++) {
/* * *************
Agrego y vinculo el proveedor********** */
$this->Proveedore->create(array('nombre' =>
$this->request->data['Traslado'][$i]['Proveedore']['nombre']));
$this->Proveedore->save();
$proveedore = $this->Proveedore->find('first',
array('order' => array('Proveedore.id DESC'), 'fields' => array('id')));
$this->request->data['Traslado'][$i]['proveedore_id'] =
$proveedore['Proveedore']['id'];
$this->request->data['Traslado'][$i]['paquete_id'] = $paquete;
/* *
***************************************************** */
}
/* *
********************************************************* */
if
($this->Traslado->saveAll($this->request->data['Traslado'])) {
Espero su ayuda porque esto me esta volviendo loco y ademas tengo que
entregar este trabajo el fin de semana. Saludos y grcias de antemano
--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de Grupos
de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos
electrónicos, envía un correo electrónico a
[email protected].
Para publicar una entrada en este grupo, envía un correo electrónico a
[email protected].
Visita este grupo en http://groups.google.com/group/cakephp-es?hl=es.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.