Laravel filter Рестораны по категории ID - PullRequest
0 голосов
/ 26 сентября 2018

Я создаю несколько фильтров ресторанов.Это отношения категорий по модели ресторана:

public function categories()
{
    return $this->belongsToMany(Category::class,'restaurant_categories_relation','restaurant_id');
}

Это фильтр Restaurant Controller

public function filter(Request $request)
{
    // Kiểm tra ajax
    if(!$request->ajax())
    {
        return "";
    }

    // Lọc theo thành phố & quận
    if(!$request->city && !$request->district)
        $restaurants = Restaurant::with('categories');
    elseif($request->district)
        $restaurants = Restaurant::with('categories')->where('district_id', $request->district);
    else
        $restaurants = Restaurant::with('categories')->where('city_id', $request->city);

    // Kiểm tra có tìm kiếm hay ko
    if(!empty($request->input('query')))
    {
        $restaurants = $restaurants->join('restaurant_translations as t', 't.restaurant_id', '=', 'restaurants.id')
            ->where('t.locale','=', LaravelLocalization::getCurrentLocale())
            ->where('t.name', 'like', '%'.$request->input('query').'%')
            ->select('restaurants.*');
    }

    //Kiểm tra có lọc theo danh mục hay ko
    if(!empty($request->input('category')) && $request->input('category') != 0)
    {

    }
    foreach($restaurants->get() as $restaurant) {
    }
    ...
    return $html;
}

Если у меня есть категория фильтра запросов, я хочу, чтобы ресторан имел categoryID = идентификатор категории запроса.Я делаю что-то в моем сценарии, но он не работает.Кто подскажет как это сделать?Большое спасибо!

1 Ответ

0 голосов
/ 26 сентября 2018

Попробуйте использовать whereHas()

if(!empty($request->input('category')) && $request->input('category') != 0) {
    $restaurants->whereHas('category', function (Builder $q) {
        $q->where('id', $request->input('category'));
    });
}
...