44
55use Illuminate \Container \Container ;
66use Illuminate \Database \MultipleRecordsFoundException ;
7+ use Illuminate \Database \Eloquent \Builder ;
78use Illuminate \Database \RecordsNotFoundException ;
89use Illuminate \Pagination \CursorPaginator ;
910use Illuminate \Pagination \LengthAwarePaginator ;
@@ -305,7 +306,9 @@ protected function paginateUsingCursor($perPage, $columns = ['*'], $cursorName =
305306 $ builder ->where (function (self $ builder ) use ($ addCursorConditions , $ cursor , $ orders , $ i ) {
306307 ['column ' => $ column , 'direction ' => $ direction ] = $ orders [$ i ];
307308
308- $ builder ->where ($ column , $ direction === 'asc ' ? '> ' : '< ' , $ cursor ->parameter ($ column ));
309+ $ original = $ this ->reverseColumnAliasingForCursorPagination ($ this , $ column );
310+
311+ $ builder ->where ($ original , $ direction === 'asc ' ? '> ' : '< ' , $ cursor ->parameter ($ column ));
309312
310313 if ($ i < $ orders ->count () - 1 ) {
311314 $ builder ->orWhere (function (self $ builder ) use ($ addCursorConditions , $ column , $ i ) {
@@ -327,6 +330,32 @@ protected function paginateUsingCursor($perPage, $columns = ['*'], $cursorName =
327330 ]);
328331 }
329332
333+ /**
334+ * Reverse any aliases columns for column ordering.
335+ *
336+ * @param \Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $builder
337+ * @param string $parameter
338+ * @return string
339+ */
340+ protected function reverseColumnAliasingForCursorPagination ($ builder , string $ parameter )
341+ {
342+ $ columns = $ builder instanceof Builder ? $ builder ->getQuery ()->columns : $ builder ->columns ;
343+
344+ if (! is_null ($ columns )) {
345+ foreach ($ columns as $ column ) {
346+ if (stripos ($ column , ' as ' ) !== false ) {
347+ [$ original , $ alias ] = explode (' as ' , $ column );
348+
349+ if ($ parameter === $ alias ) {
350+ return $ original ;
351+ }
352+ }
353+ }
354+ }
355+
356+ return $ parameter ;
357+ }
358+
330359 /**
331360 * Create a new length-aware paginator instance.
332361 *
0 commit comments