علی 1374
5 سال پیش توسط علی 1374 مطرح شد
4 پاسخ

اشکال کد فیلتر کردن اطلاعات

سلام خسته نباشید من میخوام یه قسمت جست و جو برای یه سایت فیلم بسازم برای همین از کد زیر در داخل کنترلر استفاده کردم

  $films = Film::filter()->get();

و در داخل مدل از کد زیر:

 public function scopeFilter($query)
    {
        $directors = request('director')[0];
        $genres=request('genre')[0];
        if (isset($directors) && $directors != []) {
            foreach ($directors as $director) {
                $query->orwhere('director', $director);
            }
            if( isset($genres) && $genres!=[] ){
                    $query->where(function ($query) use ($genres){
                        foreach ($genres as $genre) {
                            $query->orwhere('genre', $genre);
                        }
                    });
            }
        }else{
            if( isset($genres) && $genres!=[] ){
                foreach ($genres as $genre) {
                    $query->orwhere('genre', $genre);
                }
            }
        }
        return $query;
    }

حالا این مشکل به وجود میاد که بین دو متغییر به جای اینکه از and استفاده کنه از or استفاده میکنه و تمامی رکورد ها را بر میگردونه
کسی میدونه مشکل از چیه و چطور میشه حلش کرد


ثبت پرسش جدید
محمد صادقیان
تخصص : برنامه نویس وب - فریم ورک Lara...
@drcode.ir 5 سال پیش مطرح شد
0

شما باید از whereIn استفاده کنید.

whereIn('imdb', $rand )

$rang هم باید آرایه باشه.


علی 1374
تخصص : (fullstack(laravel , vue
@lionleo1374 5 سال پیش مطرح شد
0

@drcode.ir
ممنون ولی اشکال من از داخل scope هست اونجایی که میخواد از داخل directorsnd
genres ها را بیرون بکشه به جای استفاده از and از or استفاده میکنه


محمد صادقیان
تخصص : برنامه نویس وب - فریم ورک Lara...
@drcode.ir 5 سال پیش مطرح شد
0

استفاده از orWhere هم به معنی یا هست نه و.
چرا از where استفاده نکردید که شرط and اجرا بشه؟


علی 1374
تخصص : (fullstack(laravel , vue
@lionleo1374 5 سال پیش مطرح شد
0

@drcode.ir
من میخوام چیزی مثل جست و جوی دیجی کالا بشه که از لیست برند ها چند برند را انتخاب کرد مثل (اپل و سامسونگ ) حالا از بین لیست رنگ ها هم چند رنگ رو انتخاب کرد مثل (سفید ومشکی) و در نهایت جستو جو کنه( کالاهایی که از برند اپل یا سامسونگ هستند) و( دارای رنگ سفید یا مشکی ) هستند یعنی بین عبارت ها از and استفاده بشه و در داخل عبارت ها از or اگر من به جای orwhere از where استفاده کنم در داخل عبارت ها از or استفاده میکنه و نتایج نادرست میشه


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

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