Laravel 5.3 Eloquent Union Error

1

I have the following function:

 public function searchJoin(){
     $first = $this->getModel()   
                ->join('tarea_x_usuario', 'tarea_x_usuario.idTarea', '=', 'tarea.id')
                ->rightJoin('usuario', 'usuario.id', '=', 'tarea_x_usuario.idUsuario')
                ->join('role_x_usuario', 'role_x_usuario.idUsuario', '=', 'usuario.id')
                ->join('role', 'role.id', '=', 'role_x_usuario.idRole')                
                ->get();


        return $this->getModel()
                ->join('tarea_x_usuario', 'tarea_x_usuario.idTarea', '=', 'tarea.id')
                ->rightJoin('usuario', 'usuario.id', '=', 'tarea_x_usuario.idUsuario')
                ->join('role_x_usuario', 'role_x_usuario.idUsuario', '=', 'usuario.id')
                ->join('role', 'role.id', '=', 'role_x_usuario.idRole')
                ->where('role.role','=','ADMINISTRADORR')
                ->union($first)
                ->get();

    }

I get the following error:

  

BadMethodCallException in Macroable.php line 74:   Method getBindings does not exist.

Also try to make the following query:

public function searchJoin () {

$first = $this->getModel()
        ->join('tarea_x_usuario', 'tarea_x_usuario.idTarea', '=', 'tarea.id')
        ->rightJoin('usuario', 'usuario.id', '=', 'tarea_x_usuario.idUsuario')
        ->join('role_x_usuario', 'role_x_usuario.idUsuario', '=', 'usuario.id')
        ->join('role', 'role.id', '=', 'role_x_usuario.idRole')
        ->where('role.role', '=', 'ADMINISTRADORR')
        ->get();


$two = $this->getModel()
        ->join('tarea_x_usuario', 'tarea_x_usuario.idTarea', '=', 'tarea.id')
        ->rightJoin('usuario', 'usuario.id', '=', 'tarea_x_usuario.idUsuario')
        ->join('role_x_usuario', 'role_x_usuario.idUsuario', '=', 'usuario.id')
        ->join('role', 'role.id', '=', 'role_x_usuario.idRole')
        ->get();

dd($first->union($two)->get());

}

The two queries work, it throws error in the union.

The sequence of errors are:

    
asked by Juan Pablo B 09.11.2016 в 16:52
source

1 answer

2

I think it's because you're applying the get() method to the end. About the documentation indicates that it is applied before the get , remove them and you have the proof

$first = DB::table('users')->whereNull('first_name');

$users = DB::table('users')->whereNull('last_name')->union($first)->get();

link

    
answered by 06.01.2017 / 20:22
source