从查询中获得集合后,我想对其进行排序。然后,出现了以下错误消息:
错误代码:907 错误消息:ORA-00907:缺少右括号 位置:202 语句:从存在的“ATTENDANCE_LISTS”中选择 count(*) 作为聚合(从“MEETINGS”中选择 *,其中“ATTENDANCE_LISTS”.“MEETING_ID” = "MEETINGS"."ID" 和 "STATUS_MEETING" = :p0 和 "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”订购 desc))
代码如下:
$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 方法构建了查询,所以它不可能真的是关于缺少括号的问题。**
编辑: 简而言之,当我尝试按“会议”属性对出勤列表进行排序(按属性的属性排序)时,问题就出现了。有什么帮助吗?
P粉6525239802024-03-30 09:39:10
这是解决方案。
解决方案是更改 whereHas to join。代码如下:
$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);