從查詢中收集到集合后,我想對其進行排序。然后,出現此錯誤訊息:
錯誤代碼:907 錯誤訊息:ORA-00907:缺少右括號位置:202 陳述句:從存在的“ATTENDANCE_LISTS”中選擇計數(*)作為聚合(從“會議”中選擇*,其中“ATTENDANCE_LISTS”。“會議ID”=“會議” "."ID" and "STATUS_MEETING" = :p0 and "START_MEETING" <= :p1 order by "START_MEETING" desc) 系結: [Disetujui,2022-04-19 20:11:24] (SQL: select count(* ) 從存在的 "ATTENDANCE_LISTS" 中聚合(從 "MEETINGS" 中選擇 *,其中 "ATTENDANCE_LISTS"."MEETING_ID" = "MEETINGS"."ID" 和 "STATUS_MEETING" = Disetujui 和 "START_MEETING" <= 2022-04-19 20 :11:24 按“START_MEETING”順序排列))
代碼如下:
$meetings2 = AttendanceLists::whereHas('meeting', function ($query) {
$now = new DateTime("now");
$query->where('status_meeting', '=', 'Disetujui')
->where('start_meeting', '<=', $now)
->orderBy('start_meeting', 'desc')
;
})->paginate(5);
我只用上面的 Laravel eloquent 方法構建了查詢,我已經為此苦苦掙扎了好幾天。請幫我。
是的,這里有一個看似相似的帖子: ORA-00907:缺少右括號
但是,我遇到的問題與使用 SQL 格式手動構造查詢無關。我使用 PHP Laravel eloquent 方法構造了查詢,所以它不可能真的是缺少括號。**
編輯:簡而言之,當我嘗試按“會議”的屬性(按屬性的屬性排序)對出席串列進行排序時,問題就出現了。有什么幫助嗎?
uj5u.com熱心網友回復:
我不知道 PHP 和 Laravel,但是 - 從故事的 Oracle 方面來看,它是您在子查詢ORDER BY中使用的子句。EXISTS這是一個演示。
這就是你所擁有的:
SQL> select * from dual
2 where exists (select *
3 from dual
4 order by dummy);
order by dummy)
*
ERROR at line 4:
ORA-00907: missing right parenthesis
洗掉ORDER BY子句:
SQL> select * from dual
2 where exists (select *
3 from dual
4 );
D
-
X
SQL>
uj5u.com熱心網友回復:
看起來您應該將 order by 子句移出whereHas函式:
$meetings2 = AttendanceLists::whereHas(
'meeting',
function ($query) {
$now = new DateTime("now");
$query->where('status_meeting', '=', 'Disetujui')
->where('start_meeting', '<=', $now);
})->orderBy('start_meeting', 'desc')
->paginate(5);
(注意:這是未經測驗的,因為我無權訪問 Laravel 或您的架構。)
或者,使用 ajoin而不是whereHas.
uj5u.com熱心網友回復:
這是解決方案。
解決方案是更改 whereHas 加入。這是代碼:
$meetings = AttendanceLists::join('meetings', 'meetings.id', '=', 'attendance_lists.meeting_id')
->where('attendance_lists.user_id', '=', $id_user)
->where('meetings.status_meeting', '=', 'Disetujui')
->where('meetings.start_meeting', '<', $now)
->orderBy('meetings.start_meeting', 'desc')
->paginate(5);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/458876.html
