我有以下功能:
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();
}
它向我抛出以下错误:
Macroable.php 第 74 行中的 BadMethodCallException:方法 getBindings 不存在。
我还尝试执行以下查询:
公共函数 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());
}
这两个查询有效,它在联合中引发错误。
错误的顺序是:
我认为这是因为您
get()
最后应用了该方法。关于文档,它表明它是之前应用get
的,删除它们并进行测试https://laravel.com/docs/5.3/queries#unions