راکت
حل شده

چندین where پشت سر هم لاراول

3 پاسخ

سلام ، من یه تیکه کدی نوشتم برای سرچ کردن بین کامنت ها ، و من تو view خودم به صورت Tab وار نشونشون میدم . ولی تو سرچ دو تا where پشت سر هم میشن و خراب میکنه دومی رو ، کد رو بخونید متوجه میشید.

            $comments = Comment::WhereHas('user', function ($query) use ($keyword) {
                $query->where('name', 'LIKE', "%{$keyword}%");
            })->orWhere([
                ['body', 'LIKE', '%' . $keyword . '%'],
            ]);

            $comments2 = $comments;

            return view('admin.comments.all_comments', [
                'approved_comments' => $comments->where('approved', 1)->paginate(10, ['*'], 'approved'),
                'unapproved_comments' => $comments2->where('approved', 0)->paginate(10, ['*'], 'unapproved')
            ]);

حتی یه متغیر به اسم $comments2 هم ساختم و کوئری اول رو درش ذخیره کردم ولی فرقی نکرد ، به نظرتون باید چی کار کنم کوئری اول رو برای هر جفتشون مجبور نباشم تکرار کنم ؟ خیلی ممنون

thevil
thevil
@thevilgh
ثبت پرسش جدید

پاسخ‌ها

3
محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

بهترین پاسخ

سلام
به نظرم بهترین راهکار در چنین شرایطی استفاده از clone‍ هست:

$query = Comment::WhereHas('user', function ($q) use ($keyword) {
                $q->where('name', 'LIKE', "%{$keyword}%");
            })->orWhere([
                ['body', 'LIKE', '%' . $keyword . '%'],
            ]);

return view('admin.comments.all_comments', [
    'approved_comments' => (clone $query)->where('approved', 1)->paginate(10, ['*'], 'approved'),
    'unapproved_comments' => (clone $query)->where('approved', 0)->paginate(10, ['*'], 'unapproved')
]);
thevil
thevil
@thevilgh

تخصص: برنامه نویس خسته

@mhyeganeh به به ، از کی بود میخواستم ببینیم clone به چه دردی میخوره بلاخره یافت شد , مرسی از راه حلتون 😂

محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

سلامت باشید.
به همین خاطره که میگن بهترین روش یادگیری این هست که تو دل کار با مسئله اش مواجه بشی 😉

شاید پاسخ شما همین‌جا باشد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام