inRandomOrder with paginate

3 هفته پیش
توسط hamed آپدیت شد
hamed ( 2960 تجربه )
3 هفته پیش

سلام. من به یک مسئله جالب در query builder برخوردم. وقتی در کوئری هم زمان از inRandomOrder و paginate استفاده می کنم و تعداد صفحات بیشتر از یکی میشه ، نتیجه تکراری میاره. دوستان کسی قبلا راه حلشو پیدا کرده ؟
تشکر

بهترین پاسخ انتخاب شده توسط hamed
hamed
3 هفته پیش

یک seed باید به تابع بدهیم و آن را برای صفحات بعدی در سشن ذخیره کنیم
https://blog.antoine-augusti.fr/2014/05/paginate-posts-correctly-when-they-are-random-ordered/

الیاس بشکنی ( 53385 تجربه )
3 هفته پیش
تخصص : برنامه نویس موبایل
hamed ( 2960 تجربه )
3 هفته پیش

@elyasbeshkani
اینو دیده بودم . شاید درست متوجهش نشده باشم. اما من برداشتم این بود که بجای foobar باید نام یک از ستونهای جدول رو بزارم. که با این کار نتایج از حالت رندوم خارج میشه

الیاس بشکنی ( 53385 تجربه )
3 هفته پیش
تخصص : برنامه نویس موبایل

@shojai80

فکر کنم طبق چیزی که اینجا توی مستندات گفته باید یه seed بهش بدین که خودمم دقیق نمیدونم چیه
https://laravel.com/api/6.x/Illuminate/Database/Query/Builder.html#method_inRandomOrder

یا اینکه اینم شاید جواب بده (اضافه کردن distinct)

->inRandomOrder()->distinct()->paginate(10);
hamed ( 2960 تجربه )
3 هفته پیش

من حتی inrandomorder رو با '((()orderBy(DB::raw('RAND جایگزین کردم ولی همچنان مشکل باقیست

hamed ( 2960 تجربه )
3 هفته پیش

@elyasbeshkani
distinct رو هم امتحان کردم ولی فرقی نمی کنه

سیدعلی موسوی ( 74406 تجربه )
3 هفته پیش
تخصص : سی شارپ و پی اچ پی

خب این inRandomOrder رو اول کوئری اضاف میکنی بعد paginate میکنی؟

hamed ( 2960 تجربه )
3 هفته پیش

@juza66
نفهمیدم جملتون سوالیه یا خبری.
;(inRandomOrder()->paginate(10<-
این کدشه

hamed ( 2960 تجربه )
3 هفته پیش

@juza66
@elyasbeshkani
من تست و خطا به کد زیر رسیدم که فکر کنم مشکلو حل کرده. البته چراشو نفهمیدم. اگر عزیزی می دونه ممنون میشم توضیح بده.

->inRandomOrder(rand(1,10000))
hamed ( 2960 تجربه )
3 هفته پیش

متاسفانه اینم جواب نداد. اشتباه کردم

hamed ( 2960 تجربه )
3 هفته پیش

یک seed باید به تابع بدهیم و آن را برای صفحات بعدی در سشن ذخیره کنیم
https://blog.antoine-augusti.fr/2014/05/paginate-posts-correctly-when-they-are-random-ordered/

برای ارسال پاسخ باید وارد سایت شوید