2017-02-25 146 views
2

我在laravel在我的控制器這個SQL查詢Laravel SQL查詢一直給SQLSTATE [42000]:語法錯誤或訪問衝突:1064

$distinct_course = DB::table('student') 
    ->select(DB::raw('count(*) as grad_count, `student_course`, MONTH(`student_date_ended`)')) 
    ->where('student_course', '=', 'Basic Computer') 
    ->whereYear('student_date_ended', '=', '2015') 
    ->groupby(DB::raw('MONTH(`student_date_ended`')) 
    ->get(); 

這是基於這個SQL查詢我做之前先工作將其轉換爲Laravel

select count(*) as grad_count, `student_course`, MONTH(`student_date_ended`) from `student` where `student_course` = "Basic Computer" and year(`student_date_ended`) = 2015 group by MONTH(`student_date_ended`) 

但由於某種原因,我總是得到這個錯誤。

SQLSTATE [42000]:語法錯誤或訪問衝突:1064您的SQL語法錯誤; (SQL:select count(*)as grad_count,student_course,MONTH(student_date_ended)from student其中student_course =基本計算機和年(student_date_ended)檢查對應於您的MariaDB服務器版本的手冊, )= 2015 GROUP BY MONTH(student_date_ended

難道我做錯了什麼在這裏,我不知道的

回答

1

作爲替代方案,在我所有的項目中,我使用DB相互作用的下列方式?

$Query = 'select count(*) as grad_count, `student_course`, 
    MONTH(`student_date_ended`) 
    from `student` 
    where `student_course` = ? 
    and year(`student_date_ended`) = ? 
    group by MONTH(`student_date_ended`)'; 

$GradStudents = DB::select($Query, [ $StudenCourse, $StudentDateEnded]); 

通過這種方式,我可以從已確認的工作MySQL語句轉到Laravel,而無需擔心轉換後的調用不工作。

注意:不要在控制器中保留你的數據庫調用,我會讓他們到一個模型文件夾。這樣你將保持MVC設計模式。

+0

非常感謝!我仍然習慣了Laravel,所以我仍然需要了解如何在我的項目中使用模型。 – AminoAcid

0

在Paul的幫助下,我設法使用了這段代碼。

$Query = 'select count(*) as grad_count, `student_course`, 
       MONTH(`student_date_ended`) as Month 
       from `student` 
       where `student_course` = ? 
       and year(`student_date_ended`) = ? 
       group by MONTH(`student_date_ended`), student_course'; 

    $StudentCourse = 'Basic Computer'; 
    $StudentDateEnded = 2015; 

    $distinct_course = DB::select($Query, [ $StudentCourse, $StudentDateEnded]); 

這似乎問題的一部分是我還需要通過所以我試圖將它添加到我原來的Laravel碼組中加入「student_course」列,並設法得到它一起工作這種方式。

$distinct_course = DB::table('student') 
    ->where('student_course', '=', 'Basic Computer') 
    ->whereYear('student_date_ended', '=', '2015') 
    ->select(DB::raw('count(*) as grad_count, `student_course`, MONTH(`student_date_ended`) as Month')) 
    ->groupby(DB::raw('MONTH(`student_date_ended`), student_course')) 
    ->get(); 
相關問題