Ayuda con relación hasOne

63 views
Skip to first unread message

Paz Ojeda

unread,
Apr 17, 2016, 8:25:08 PM4/17/16
to CakePHP en Español
Hola, necesito ayuda con relaciones hasOne, tengo 2 modelos, uno se llama Users y otro Empleados y estos se relacionan 1:1

Este es el modelo Users:

class User extends AppModel {

    public $displayField = 'username';

    public $hasOne= array(
                'Empleado'=>array(
                    'className'=>'Empleado',
                    'foreignKey'=>'user_id'
                    )
            );
}


Y este el de Empleados:

    class Empleado extends AppModel{
         public $displayField='nombre';

         public $BelongsTo= array(
                'User'=>array(
                       'ClassName'=>'User'
                 )
          );
}

Lo que pasa es que cuando agrego un usuario lo añado eligiendo a un empleado y asignando basicamente que tipo de usuario será (administrador, o normal)





Y el problema que tengo esque en la base de datos, en la tabla de empleados no se me actualiza el campo user_id sale con valor 0 cada vez que intento agregar un usuario:



Por otro lado en la tabla users si me aparece el id del empleado al que le cree un usuario.



Eso sería mi problema, necesito ver en la tabla de empleados el user_id respectivo
Muchas Gracias
Saludos


omar saboya caro

unread,
Apr 20, 2016, 9:35:58 AM4/20/16
to cakep...@googlegroups.com
Tienes dos opciones:

1.- En el modelo User, puedes usar la function AfterSave($created){} y actualizar el campo user_id en la tabla empleados
2.- usa trigger mysql en tu tabla user:

CREATE TRIGGER `update_empleados_after_insert` AFTER INSERT ON `users`
 FOR EACH ROW begin
update empleados set user_id=new.id where id=new.empleado_id;
END;

--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP en Español" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cakephp-esp...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a cakep...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/cakephp-esp.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Omar Saboya Caro
RPM #950456511

Carlos Covis

unread,
Apr 21, 2016, 7:21:21 PM4/21/16
to cakep...@googlegroups.com
No veo necesario guardar el id del usuario en empleados, si ya en usuarios tienes el id del empleado, con las relaciones de los modelos puedes obtener los datos del usuario en empleados, si quieres hacer lo que planteas (como dije no necesario), en el controlador de usuarios luego de hacer el save($this->request->data) puedes hacer esto un savefield o un update, investiga en la documentacion del cake (para ambos necesitas pasar el id del ultimo elemento salvado) con $this->User->id,  lo obtinenes, almacenalo en una variable y usalo en el metodo para actualziar que elijas.

Espero ayudar, saludos.
***CArl0s j0sE c0VIs G0mez***  =^_^=

Paz Ojeda

unread,
Apr 21, 2016, 7:24:38 PM4/21/16
to cakep...@googlegroups.com

Mm, esque no creo que sea un problema de actualizar los datos, los datos se guardaron asi, sale 0 en vez del id correspondiente
Gracias

Has recibido este mensaje porque estás suscrito a un tema del grupo "CakePHP en Español" de Grupos de Google.
Para anular la suscripción a este tema, visita https://groups.google.com/d/topic/cakephp-esp/zoxk2iRFX0I/unsubscribe.
Para anular la suscripción a este grupo y a todos sus temas, envía un correo electrónico a cakephp-esp...@googlegroups.com.

Carlos Covis

unread,
Apr 21, 2016, 11:12:20 PM4/21/16
to cakep...@googlegroups.com
hazle un debug al $this->request->data, seguro, no estas pasando el id del usuario a guardar, por tanto no lo hace
Reply all
Reply to author
Forward
0 new messages