我從Pragnesh Khalas得到了這個查詢,請問有人可以把它轉換成laravel查詢嗎?轉換查詢到Laravel
SELECT * FROM Position ORDER BY
CASE WHEN position_value = 1 THEN created_at END ASC,
CASE WHEN position_value = 2 THEN created_at END DESC
我已經做到這一點,但仍然得到了錯誤信息
$position = Position::orderBy(DB::raw('(CASE WHEN position_value = 1 THEN created_at END asc, CASE WHEN position_value = 2 THEN created_at END desc)'))->paginate(29);
這是錯誤消息
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'asc, CASE WHEN position_value = 2 THEN created_at END desc) asc limit 29 offset 0' at line 1 (SQL: select * from `position` order by (CASE WHEN position_value = 1 THEN created_at END asc, CASE WHEN position_value = 2 THEN created_at END desc) asc limit 29 offset 0)
感謝
爲什麼降低我的noob問題? :( – bambang
試過刪除括號? – Unnawut
問題似乎是,雄辯期望排序順序(asc,desc)作爲orderBy方法的第二個參數傳遞,就像'orderBy('created_at','desc')一樣。 ;'。 – Jeemusu