簡體   English   中英

如何使用 laravel 對數據進行混洗和分頁

[英]How to shuffle and paginate data with laravel

我想對 laravel 中的數據進行洗牌和分頁。

當我使用此代碼時:

`$questions = Question::where("exam_id",$exam->id)->shuffle()->paginate(1);`

給我這個錯誤: BadMethodCallException 調用未定義的方法 Illuminate\Database\Eloquent\Builder::shuffle()當我使用這段代碼時:

$questions = Question::where("exam_id",$exam->id)->paginate(1)->shuffle();

dd($questions = Question::where("exam_id",$exam->id)->paginate(1)->shuffle()); 給我一個包含第一個項目和其他項目不存在的集合。 而且也沒有分頁信息。當我不使用dd()時,會出現此錯誤: Method Illuminate\Database\Eloquent\Collection::links 不存在。 當我在視圖中使用$questions->links()時。 當我使用此代碼時:

$questions = Question::where("exam_id",$exam->id)->get()->shuffle()->paginate(1);

給我這個錯誤:方法 Illuminate\Database\Eloquent\Collection::paginate 不存在。

當我使用這段代碼時:

$questions = Question::where("exam_id",$exam->id)->inRandomOrder()->paginate(1);

它可以工作,但數據會在后面的頁面上重復。 例如,第一頁上的數據可能在第七頁或其他頁上重復。

實際上,我希望將數據按隨機排序,然后分頁,以便在一個頁面上加載數據時不會在后續頁面上重復。

請幫助我!謝謝

我遇到了同樣的問題,並通過將 shuffle()->all() 方法添加到視圖文件中的集合變量來解決它,這似乎工作得很好。

將變量傳遞給視圖以使用 foreach 循環后,我添加了以下內容:

$rows->shuffle()->all()

所以我的 foreach 循環看起來像:

foreach($rows->shuffle()->all() as $row){... }

使用 ajax 加載時,前端的行仍然可以在分頁器中正常工作,因為集合沒有被觸及,並且下一行的選擇被正確加載然后打亂,這意味着沒有重復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM