thevil
3 سال پیش توسط thevil مطرح شد
3 پاسخ

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

سلام ، من یه تیکه کدی نوشتم برای سرچ کردن بین کامنت ها ، و من تو 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 هم ساختم و کوئری اول رو درش ذخیره کردم ولی فرقی نکرد ، به نظرتون باید چی کار کنم کوئری اول رو برای هر جفتشون مجبور نباشم تکرار کنم ؟ خیلی ممنون


ثبت پرسش جدید
محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
1

سلام
به نظرم بهترین راهکار در چنین شرایطی استفاده از 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
تخصص : برنامه نویس خسته
@thevilgh 3 سال پیش مطرح شد
0

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


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
0

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


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

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