سلام. من به یک مسئله جالب در query builder برخوردم. وقتی در کوئری هم زمان از inRandomOrder و paginate استفاده می کنم و تعداد صفحات بیشتر از یکی میشه ، نتیجه تکراری میاره. دوستان کسی قبلا راه حلشو پیدا کرده ؟
تشکر
یک seed باید به تابع بدهیم و آن را برای صفحات بعدی در سشن ذخیره کنیم
https://blog.antoine-augusti.fr/2014/05/paginate-posts-correctly-when-they-are-random-ordered/
@elyasbeshkani
اینو دیده بودم . شاید درست متوجهش نشده باشم. اما من برداشتم این بود که بجای foobar باید نام یک از ستونهای جدول رو بزارم. که با این کار نتایج از حالت رندوم خارج میشه
شاید پاسخ شما همینجا باشد
فکر کنم طبق چیزی که اینجا توی مستندات گفته باید یه seed بهش بدین که خودمم دقیق نمیدونم چیه
https://laravel.com/api/6.x/Illuminate/Database/Query/Builder.html#method_inRandomOrder
یا اینکه اینم شاید جواب بده (اضافه کردن distinct)
->inRandomOrder()->distinct()->paginate(10);من حتی inrandomorder رو با '((()orderBy(DB::raw('RAND جایگزین کردم ولی همچنان مشکل باقیست
@elyasbeshkani
distinct رو هم امتحان کردم ولی فرقی نمی کنه
@juza66
نفهمیدم جملتون سوالیه یا خبری.
;(inRandomOrder()->paginate(10<-
این کدشه
@juza66
@elyasbeshkani
من تست و خطا به کد زیر رسیدم که فکر کنم مشکلو حل کرده. البته چراشو نفهمیدم. اگر عزیزی می دونه ممنون میشم توضیح بده.
->inRandomOrder(rand(1,10000))متاسفانه اینم جواب نداد. اشتباه کردم