laravel с ajax ответом - PullRequest
       0

laravel с ajax ответом

0 голосов
/ 18 января 2020

Мое приложение возвращает ошибку, и мне нужно знать, почему. Я сделал AJAX запрос на получение всех продуктов, которые он делает, выбирает горячие предложения или специальные предложения и ...

Он возвращает данные, если я удалю эту функцию запроса. Как я могу передать этот запрос выбранному полю этой функции?

Слишком мало аргументов для функции App \ Http \ Controllers \ Website \ AllProductController :: App \ Http \ Controllers \ Website \ {closure} ( ), 1 передано в /...../vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php в строке 226 и ровно 2 ожидается


public function ajax_category(Request $request)
    {
        if(isset($request->price) && isset($request->categories_id))
        {
        $product_category = $request->categories_id;

        // change the value from string to array.
        if (isset($request->selectedbox) && $request->selectedbox !='') {
            $pairs = $request->selectedbox;
            $newArray = explode(",", $pairs);
        }

        if (!empty($request->categories_id)) {
            $max = $request->max;
            $min = $request->min;
        } else {
            $min = product_model::where('pactive', 1)->select('MIN("price")')->first();
            $max = product_model::where('pactive', 1)->select('MAx("price")')->first();
        }

        // change the value from string to array.

        if (!empty($request->priceRange)) {

            $currentRange = $request->priceRange;
            $priceArray = explode(",", $currentRange);

            $firstPrice = $priceArray[0];
            $secondPrice = $priceArray[1];
        } else {
            $firstPrice = $min;
            $secondPrice = $max;
        }

        $products = product_model::where('category', $request->categories_id)
            ->whereBetween('price', [$firstPrice, $secondPrice]);
        if (isset($request->selectedbox) && $request->selectedbox !='') {
            $products = $products->where(function ($query,Request $request) {

                $pairs = $request->selectedbox;
                $newArray = explode(",", $pairs);

                $query->whereIn('poffertype',implode(',', $newArray))
                    ->orwhereIn('brand', implode(',', $newArray))
                    ->orwhereIn('brand_ar', implode(',', $newArray));
            });
        }
        $products = $products->with('p_images');

        if (isset($request->price)) {
            switch ($request->price) {
                case '1':
                    $products = $products->orderby('price', 'asc');
                    break;
                case '2':
                    $products = $products->orderby('price', 'desc');
                    break;
                case '3':
                    $products = $products->orderby('created_at', 'asc');
                    break;
                case '4':
                    $products = $products->orderby('created_at', 'desc');
                    break;
                default:
                    $products = $products->orderby('price', 'desc');
                    break;
            }
        }
            $products = $products->get();

1 Ответ

2 голосов
/ 18 января 2020

Эта часть:

$products = $products->where(function ($query,Request $request) {

должна быть

$products = $products->where(function ($query) use ($request) {

. Ключевое слово use может использоваться для нескольких целей , одно из которых должно наследовать переменные в закрытии.

...