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

جستجوی پیشرفته در لایووایر بر اساس چندین فیلد

من برای ساخت کوئری از DB::table استفاده میکنم و 3 جدول رو جوین میکنم
توی صفحه ی جستجو ، 4 تا رادیو باتن دارم و چهار تا فیلد که اگه هر کدوم پر باشه ، باید بر اساس اون فیلدها سرچ رو انجام بدم و paginate هم بکنم
دوستان میتونن راهنمایی کنن ؟


ثبت پرسش جدید
محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 1 سال پیش مطرح شد
0

سلام دوست عزیز
به چند روش میتونی انجام بدی کارتو
یک where بزاری و توی اون شروط چک کردن داشته باشی که اگر نیاز بود where بشه مثل کد زیر

->where(function ($query) use ($meals){
                    if ($meals->on_breakfast){
                        $query->orWhere('on_breakfast',$meals->on_breakfast);
                    }
                    if ($meals->on_lunch){
                        $query->orWhere('on_lunch',$meals->on_lunch);
                    }      
                })

میتونی کدت رو get نکنی و بریزی توی یک متغییر و در ادامه مرحله مرحله به کدت where اضاف کنی

            if ($this->status){
                $orders=$orders->where('status',$this->status);
            }
            if ($this->payment_type){
                $orders=$orders->where('payment_type',$this->payment_type);
            }

و در اخر که کارت با چک کردن تموم شد کدت رو اجرا کنی شرط هاشو

 $orders=$orders->orderBy('id','desc')->paginate($this->paginate);

شما تا وقتی دستور paginate و یا get و این ها رو اجرا نکنی کدت به صورت query هست و منتظر دریافت دستورات بیشتر
میتونی توی چند خط و شرط هی به کدت شرط بدی و اخر اجراش کنی


رایموند
تخصص : مختصص وردپرس - برنامه نویس لار...
@Raymond 1 سال پیش مطرح شد
jafar
@jafarpalideh 1 سال پیش مطرح شد
0

ممنون . دیده بودمش . ولی من از مدل استفاده نمیکنم
از DB::table استفاده میکنم .
مشکل من اینه


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 1 سال پیش مطرح شد
0

سلام دوست عزیز
به چند روش میتونی انجام بدی کارتو
یک where بزاری و توی اون شروط چک کردن داشته باشی که اگر نیاز بود where بشه مثل کد زیر

->where(function ($query) use ($meals){
                    if ($meals->on_breakfast){
                        $query->orWhere('on_breakfast',$meals->on_breakfast);
                    }
                    if ($meals->on_lunch){
                        $query->orWhere('on_lunch',$meals->on_lunch);
                    }      
                })

میتونی کدت رو get نکنی و بریزی توی یک متغییر و در ادامه مرحله مرحله به کدت where اضاف کنی

            if ($this->status){
                $orders=$orders->where('status',$this->status);
            }
            if ($this->payment_type){
                $orders=$orders->where('payment_type',$this->payment_type);
            }

و در اخر که کارت با چک کردن تموم شد کدت رو اجرا کنی شرط هاشو

 $orders=$orders->orderBy('id','desc')->paginate($this->paginate);

شما تا وقتی دستور paginate و یا get و این ها رو اجرا نکنی کدت به صورت query هست و منتظر دریافت دستورات بیشتر
میتونی توی چند خط و شرط هی به کدت شرط بدی و اخر اجراش کنی


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

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