سلام خسته نباشید من میخوام یه قسمت جست و جو برای یه سایت فیلم بسازم برای همین از کد زیر در داخل کنترلر استفاده کردم
$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 استفاده میکنه و تمامی رکورد ها را بر میگردونه
کسی میدونه مشکل از چیه و چطور میشه حلش کرد
@drcode.ir
ممنون ولی اشکال من از داخل scope هست اونجایی که میخواد از داخل directorsnd
genres ها را بیرون بکشه به جای استفاده از and از or استفاده میکنه
استفاده از orWhere هم به معنی یا هست نه و.
چرا از where استفاده نکردید که شرط and اجرا بشه؟
@drcode.ir
من میخوام چیزی مثل جست و جوی دیجی کالا بشه که از لیست برند ها چند برند را انتخاب کرد مثل (اپل و سامسونگ ) حالا از بین لیست رنگ ها هم چند رنگ رو انتخاب کرد مثل (سفید ومشکی) و در نهایت جستو جو کنه( کالاهایی که از برند اپل یا سامسونگ هستند) و( دارای رنگ سفید یا مشکی ) هستند یعنی بین عبارت ها از and استفاده بشه و در داخل عبارت ها از or اگر من به جای orwhere از where استفاده کنم در داخل عبارت ها از or استفاده میکنه و نتایج نادرست میشه
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟