在Laravel中使用SQL查询

时间:2016-12-10 03:53:08

标签: sql laravel-5

这是我的SQL查询:

SELECT DISTINCT batch_job_instance.JOB_NAME, MAX(batch_job_execution.CREATE_TIME) AS CREATED_TIME,  batch_job_execution.END_TIME, batch_job_execution.STATUS FROM `batch_job_execution` INNER JOIN batch_job_instance ON batch_job_execution.JOB_INSTANCE_ID = batch_job_instance.JOB_INSTANCE_ID WHERE batch_job_execution.CREATE_TIME LIKE '%2016-12-05%'  GROUP BY batch_job_instance.JOB_INSTANCE_ID ORDER BY MAX(batch_job_execution.CREATE_TIME) DESC 

我的问题,我如何在laravel中使用该查询?我是laravel的新手,有人可以帮帮我吗?我的项目需要这个谢谢:)

2 个答案:

答案 0 :(得分:0)

如果您在使用laravel格式进行转换时遇到问题,则可以运行此SQL查询。

您可以使用:

 DB::select(DB::RAW(your_sql_query)):

希望这会有所帮助。

答案 1 :(得分:0)

You can create a function within your model and query the data using the bellow format

public static function getJobs()
{
    $jobs = DB::table('batch_job_execution')
        ->select(
            DB::raw('
                     DISTINCT batch_job_instance.JOB_NAME, 
                     MAX(batch_job_execution.CREATE_TIME) AS CREATED_TIME,
                     batch_job_execution.END_TIME,
                     batch_job_execution.STATUS 
                     '
            )
        )
        ->join('batch_job_instance', 'batch_job_execution.JOB_INSTANCE_ID', '=', 'batch_job_instance.JOB_INSTANCE_ID')
        ->where('batch_job_execution', 'LIKE', '%2016-12-05%')
        ->groupBy('batch_job_instance.JOB_INSTANCE_ID')
        ->orderBy(DB::raw('MAX(batch_job_execution.CREATE_TIME)'),'DESC')
        ->get();
//        ->toSql();

    return $jobs;
}