thevil
4 سال پیش توسط 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 4 سال پیش مطرح شد
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 4 سال پیش مطرح شد
0

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


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

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


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

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