2016-05-15 31 views
0

我正在構建一個laravel應用程序,我必須生成一個報告,因爲我已經構建了一個控制器,並且已經寫了一個查詢來生成該報告,但它是顯示以下錯誤。PHP - Laravel:原始Sql查詢顯示控制器錯誤

FatalErrorException在RoomController.php:語法錯誤,意外 「R」(T_STRING)

的問題是使用R沒有這不是數據庫,但在報告中,我必須展示使用那與我concate的行值。 如何解決問題?

public function ajax_view_schedule(Request $request) 
    { 
     $dept_id=$request->get(['dept_id']); 
$schedule= DB::select(DB::raw('SELECT courses.code as c_code, courses.name as c_name,COALESCE(CONCAT('R. No',':',rooms.room_number,', ',days.name ,', ', allocate_rooms.start,' - ',allocate_rooms.end),"Not Scheduled Yet") AS Schedule 
FROM departments join courses on departments.id = courses.department_id 
left join allocate_rooms on allocate_rooms.course_id=courses.id 
left join rooms on allocate_rooms.room_id=rooms.id 
left join days on allocate_rooms.day_id=days.id WHERE departments.id='.$dept_id.'')); 
     return \Response::json($course); 
    } 

回答

1

嘗試在您的SQL查詢中用雙引號和單引號引用您的PHP字符串。

所以,您的查詢字符串看起來像:

$schedule= DB::select(DB::raw("SELECT courses.code as c_code, courses.name as c_name,COALESCE(CONCAT('R. No',':',rooms.room_number,', ',days.name ,', ', allocate_rooms.start,' - ',allocate_rooms.end),'Not Scheduled Yet') AS Schedule 
FROM departments join courses on departments.id = courses.department_id 
left join allocate_rooms on allocate_rooms.course_id=courses.id 
left join rooms on allocate_rooms.room_id=rooms.id 
left join days on allocate_rooms.day_id=days.id WHERE departments.id='.$dept_id.'")); 
1

錯誤指向這一部分:

CONCAT('R. No',':',rooms.room_number,', ',days.name ,', ', allocate_rooms.start,' - ',allocate_rooms.end) 

看看'R. No

,你不能只是把字符串引號之外,並希望PHP將明白該怎麼做它, 如果你想把報價放在報價裏面,你需要轉義它們, Escaping quotation marks in PHP