Фильтрация данных через ajax-запрос в Laravel - PullRequest
0 голосов
/ 01 октября 2018

Это моя функция в контроллере

public function ajaxResponse (Request $request) {
    if ($request->ajax()) {
        $mat_id = $request->input('mat');
        $cat_id = $request->input('cat');
        $met_id = $request->input('met');
        if ($cat_id != null) {
            $products = Product::whereHas("categories", function ($query) use ($cat_id) {
                $query->whereIn('category_id', explode(',', $cat_id));
            })->get();
        }
        if ($mat_id != null) {
            $products = Product::whereHas("productMaterial", function ($query) use ($mat_id) {
                $query->whereIn('product_material_id', explode(',', $mat_id));
            })->get();
        }

        if ($met_id != null) {
            $products = Product::whereHas("productionMethod", function ($query) use ($met_id) {
                $query->whereIn('production_method_id', explode(',', $met_id));
            })->get();
        }
        if ($cat_id == null && $mat_id == null && $met_id == null) {
            $products = Product::all();
        }
        $prod = view('partials.ajaxProducts', ['products' => $products])->render();
    }
    return response()->json(['prod' => $prod]);
}

все записи отфильтрованы в соответствии с категориями $cat_id, $mat_id, $met_id здесь и productMaterial имеют отношение "многие ко многим"с продуктом и productionMethod имеет отношение один ко многим с продуктом. Я хочу фильтровать данные с помощью запроса ajax в сочетании со всеми этими тремя отношениями

Ответы [ 2 ]

0 голосов
/ 01 октября 2018
 public function ajaxResponse(Request $request){
        if ($request->ajax()) {
            $mat_id = $request->input('mat');
            $cat_id = $request->input('cat');
            $met_id = $request->input('met');

            $products = Product::query();
            if ($cat_id != null) {
                $products->whereHas("categories", function ($query) use ($cat_id) {
                    $query->whereIn('category_id', explode(',', $cat_id));
                })->get();
            }
            if ($mat_id != null) {
                 $products->whereHas("productMaterial", function ($query) use ($mat_id) {
                    $query->whereIn('product_material_id', explode(',', $mat_id));
                })->get();
            }
            if ($met_id != null) {
                $products->whereHas("productionMethod", function ($query) use ($met_id) {
                    $query->whereIn('production_method_id', explode(',', $met_id));
                })->get();
            }

            $products = $products->get();

            $prod = view('partials.ajaxProducts', ['products' => $products])->render();
        }
        return response()->json(['prod' => $prod]);
    }
0 голосов
/ 01 октября 2018

Вы можете использовать:

public function ajaxResponse(Request $request) {
    if ($request->ajax()) {
        $mat_id = $request->input('mat');
        $cat_id = $request->input('cat');
        $met_id = $request->input('met');

        $products = Products::query(); 
        if ($cat_id != null) {
            $products = $products->whereHas("categories", function ($query) use ($cat_id) {
                $query->whereIn('category_id', explode(',', $cat_id));
            });
        }
        if ($mat_id != null) {
            $products = $products->whereHas("productMaterial", function ($query) use ($mat_id) {
                $query->whereIn('product_material_id', explode(',', $mat_id));
            });
        }
        if ($met_id != null) {
            $products = $products->whereHas("productionMethod", function ($query) use ($met_id) {
                $query->whereIn('production_method_id', explode(',', $met_id));
            });
        }

        $products = $products->get();

        $prod = view('partials.ajaxProducts', ['products' => $products])->render();
    }
    return response()->json(['prod' => $prod]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...