如何在Laravel 5.3中编写此查询?

时间:2017-06-21 21:52:40

标签: jquery laravel eloquent

SELECT *
FROM gen_monumentos
LEFT JOIN 
(SELECT MAX(cgm_atrimestrales.ATRI_intId),cgm_atrimestrales.*
FROM cgm_atrimestrales
GROUP BY MONU_intId DESC) AS AA
ON gen_monumentos.MONU_intId=AA.MONU_intId
LEFT JOIN cgm_acciones on cgm_acciones.ACCI_intId=AA.ACCI_intId

我在MySQL中进行查询和所需的结果,但我需要使用jquery在页面中显示信息。我试过了:

public function monumento()
{
    $monumentos = \DB::table('gen_monumentos')
        ->leftJoin( DB::raw( 
            'SELECT MAX( cgm_atrimestrales.ATRI_intId ),cgm_atrimestrales.* FROM cgm_atrimestrales GROUP BY MONU_intId DESC' ), function( $leftJoin)
            {
                $leftJoin->on( 'cgm_atrimestrales.MONU_intId', '=', 'gen_monumentos.MONU_intId' );
            })
        ->leftJoin('cgm_acciones','cgm_acciones.ACCI_intId','=','cgm_atrimestrales.ACCI_intId')
        ->select('gen_monumentos.*','cgm_atrimestrales.*','cgm_acciones.ACCI_varDescripcion')
        ->get();


    return \Response::json($monumentos);
}

但它没有用。

1 个答案:

答案 0 :(得分:0)

我修好了, 如果有人有类似的问题,这是解决方案

$monumentos = \DB::table('gen_monumentos')
                 ->leftJoin( DB::raw( 
                    '(
                       SELECT MAX( cgm_atrimestrales.ATRI_intId ),
                         cgm_atrimestrales.*
                       FROM cgm_atrimestrales
                       GROUP BY MONU_intId DESC)
                       as AA
                    '),
                    function( $leftJoin) {
                         $leftJoin->on(
                              'AA.MONU_intId',
                              '=',
                              'gen_monumentos.MONU_intId'
                         );
                 })
                 ->leftJoin(
                       'cgm_acciones',
                       'cgm_acciones.ACCI_intId','=','AA.ACCI_intId'
                 )
                 ->select(
                       'gen_monumentos.*',
                       'AA.*',
                       'cgm_acciones.ACCI_varDescripcion'
                 )
                 ->get();