Hacer una correcta consulta de dos tablas

publicado por: Anonymous

Estoy teniendo un problema con una consulta en Laravel donde se relacionan dos tablas: Empleados y Emergencias en una relacion 1:N. Según yo, tengo bien las relaciones en mis modelos que son los siguientes.

Empleado

    class Empleado extends Model
    {
       use SoftDeletes; 

       protected $table    = 'empleados';
       protected $fillable = ['id', 'nombre', 'apellido', 'fechaNac', 'telefono', 'celular', 
                               'celularEmp', 'email', 'emailEmp','color', 'departamento',
                               'puesto', 'sueldo];
       protected $dates    = ['deleted_at'];
       public $timestamps  = true;

       public function emergencias()
       {
          return $this->hasMany('ValachEmergencia', 'empleado_id', 'id');
       }

       public static function getEmpleados()
       {
          return DB::table('empleados')
                   ->leftJoin('emergencias', 'empleados.id', '=', 'emergencias.empleado_id')
                   ->get();
       }
    }

Emergencia

    class Emergencia extends Model
    {
       protected $table      = 'emergencias';
       protected $primaryKey = 'empleado_id';
       protected $fillable   = ['empleado_id', 'tel', 'cel', 'contacto'];
       public $timestamps    = false;

       public function empleado()
       {
          return $this->belongsTo('ValachEmpleado');
       } 
    }

Lo que quiero hacer es imprimir los datos de todos los empleados junto con todos los numeros de emergencia que correspondan a ese empleado. Como se ve en el modelo de empleado, tengo un método con el que hago la consulta y al momento de imprimir con dd($empleado) me trae lo siguiente:

  • Si tengo el empleado id = 1 y este tiene dos registros de emergencias, me imprime dos arreglos, cada uno con el id de emplead pero igual cada uno con un registro diferente de emegercia.

lo que busco es que me imprima un solo arreglo con el id = 1 y dentro de este, un arreglo con todos los registros de emergencia que se tengan.

Aqui les dejo unas capturas de como estoy recibiendo el arreglo, no me dejaba poner la imagen completa asi que solo puse donde se imprimen los datos de emergencia.

IMG
IMG

Agradeceria mucho su ayuda.

solución

Eloquent hace eso por ti. si quieres todos los empleados con sus emergencias solo debes escribir:

$empleados= ValachEmpleado::with('emergencias')->get();

un solo empleado seria:

$empleado= ValachEmpleado::findOrFail(1);
$empleado = $empleado->load('emergencias');
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *