1 回答

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
+1 對(duì)于建議使用自動(dòng)增量 id 而不是 created_at 的 Matthias S。
我建議您在服務(wù)器端跟蹤 3 件事,因?yàn)槟梢詫?duì)多于一列進(jìn)行排序。
列(例如:id/score)、最后一個(gè)值和排序順序(asc/desc)。你的新電話看起來(lái)像這樣
var page = host + "/load-more-comments/" + $submissionID + "/" + $column + "/" + $lastValue + "/" + $sort;
因此,您的新電話將如下所示:
public function loadMoreNewComments($submissionID, $skip, Request $request) {
$submission = Submission::findOrFail($submissionID);
if($request->ajax()) {
$comments = Comment::where('submission_id', $submission->id)
->orderBy($column, $sort)
->when(true, function($query) use ($column, $lastValue, $sort) {
if ($sort === 'desc') {
return $query->where($column, '<', $lastValue);
} else {
return $query->where($column, '>', $lastValue);
}
})
->take(10);
return [
'replies' => view('partials.comment_loop')->with('submission', $submission)->with('comments', $comments)->render(),
];
}
}
編輯:由于多個(gè)評(píng)論可以具有相同的分?jǐn)?shù),因此當(dāng)您按分?jǐn)?shù)排序時(shí),您還必須保留所有 id 的數(shù)組,其中分?jǐn)?shù)等于最后一個(gè)值。將此數(shù)組發(fā)送到服務(wù)器并使用類似于此的代碼:
$comments = Comment::where('submission_id', $submission->id)
->orderBy($column, $sort)
->when($column === 'id', function($query) use ($lastValue, $sort) {
if ($sort === 'desc') {
return $query->where('id', '<', $lastValue);
} else {
return $query->where('id', '>', $lastValue);
}
})->when($column !== 'id', function($query) use ($column, $lastValue, $sort, $arrayOfIds) {
if ($sort === 'desc') {
return $query->where($column, '<=', $lastValue)->whereNotIn('id', $arrayOfIds);
} else {
return $query->where($column, '>=', $lastValue)->whereNotIn('id', $arrayOfIds);
}
})->take(10);
- 1 回答
- 0 關(guān)注
- 192 瀏覽
添加回答
舉報(bào)