Php 复杂的Larvel查询leftjoin生成的查询

Php 复杂的Larvel查询leftjoin生成的查询,php,mysql,laravel,query-builder,Php,Mysql,Laravel,Query Builder,现在我想让Sueldo的和在一个列中,按recibo表的idempeado分组。我不确定是否可以将DB::table放在左连接中。如果不是,我如何在查询中调用该表以使用employado的信息进行连接 这是我到目前为止所拥有的 $pagos = DB::table('empleado') ->leftJoin('empresa', 'empresa.idEmpresa', '=', 'empleado.emp_idEmpresa_FK') -

现在我想让Sueldo的和在一个列中,按recibo表的idempeado分组。我不确定是否可以将
DB::table
放在左连接中。如果不是,我如何在查询中调用该表以使用employado的信息进行连接

这是我到目前为止所拥有的

$pagos = DB::table('empleado')
            ->leftJoin('empresa', 'empresa.idEmpresa', '=', 'empleado.emp_idEmpresa_FK')
            ->leftJoin('departamento', 'departamento.idDepartamento', '=', 'empleado.emp_idDeparameto_FK')
            ->leftJoin('tipoperiodo', 'tipoperiodo.idTipoPeriodo', '=', 'empleado.emp_idTipoPeriodo_FK')
            ->leftJoin(
                DB::table('recibos')
                ->leftJoin('empleado', 'empleado.idEmpleado', '=', 'recibos.rec_idEmpleado_FK')
                ->select(DB::raw('idRecibos, rec_idEmpleado_FK, SUM(SueldoBase) as Restante'))
                ->groupBy('rec_idEmpleado_FK')
                ->get()
                ,'recibos', 'recibos.rec_idEmpleado_FK', '=', 'empleado.idEmpleado')
            ->select('idEmpleado', 'Nombre', 'Nombre_Depto', 'Nombre_Empresa', 'Puesto', 'SueldoBase', 'Restante')
            ->get();
我收到一个错误
ErrorException
,消息如下:

数组到字符串的转换

我想这是因为我试图对我在那里进行的查询进行
leftjoin
。不知道,我对这个很陌生。有什么建议吗

在通信网的帮助下,我得到了这个问题的答案

DB::table('empleado')
            ->leftJoin('empresa', 'empresa.idEmpresa', '=', 'empleado.emp_idEmpresa_FK')
            ->leftJoin('departamento', 'departamento.idDepartamento', '=', 'empleado.emp_idDeparameto_FK')
            ->leftJoin('tipoperiodo', 'tipoperiodo.idTipoPeriodo', '=', 'empleado.emp_idTipoPeriodo_FK')
            ->leftjoin(
                    DB::raw('SELECT rec_idEmpleado_FK, SUM( SueldoBase ) AS Restante
                    FROM `recibos`
                    INNER JOIN empleado ON rec_idEmpleado_FK = idEmpleado
                    GROUP BY rec_idEmpleado_FK'), 
                    function($join)
                    {
                        $join->on('idEmpleado', '=', 'rec_idEmpleado_FK');
                    })
            ->select('idEmpleado', 'Nombre', 'Nombre_Depto', 'Nombre_Empresa', 'Puesto', 'SueldoBase', 'Restante')
            ->get();
但仍然会得到错误:

查看与您的MySQL服务器版本对应的手册,了解要使用的正确语法

SELECT rec_idEmpleado_FK, SUM( SueldoBase ) AS Restante
FROM `recibos`

知道为什么吗?

好的,我终于找到答案了。我忘了在内部查询中输入名称,这是我的答案。我希望有帮助。我的答案基于切尔西给我的链接。谢谢

$pagos = DB::table('empleado')
            ->leftJoin('empresa', 'empresa.idEmpresa', '=', 'empleado.emp_idEmpresa_FK')
            ->leftJoin('departamento', 'departamento.idDepartamento', '=', 'empleado.emp_idDeparameto_FK')
            ->leftJoin('tipoperiodo', 'tipoperiodo.idTipoPeriodo', '=', 'empleado.emp_idTipoPeriodo_FK')
            ->leftjoin(
                    DB::raw('(SELECT rec_idEmpleado_FK, SUM( SueldoBase ) AS Restante
                    FROM `recibos`
                    INNER JOIN empleado ON rec_idEmpleado_FK = idEmpleado
                    GROUP BY rec_idEmpleado_FK) AS recibos1'), 
                    function($join)
                    {
                        $join->on('idEmpleado', '=', 'rec_idEmpleado_FK');
                    })
            ->select('idEmpleado', 'Nombre', 'Nombre_Depto', 'Nombre_Empresa', 'Puesto', 'SueldoBase', 'Restante')
            ->get();

您正在尝试加入子查询,对吗?除了使用DB::raw之外,我认为雄辩者不支持这一点——请参见