Laravel неподдерживаемый метод get - PullRequest
1 голос
/ 18 апреля 2019

У меня проблемы с получением информации из базы данных в Laravel. Я пытаюсь использовать метод где и указать идентификатор, который мне нужен, но у меня всегда есть ошибка, как

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException: The GET method is not supported for this route. Supported methods: POST.

Вот код Контроллер

public function select_category($category_id){
        $products = Products::where('category_id', $category_id)->get();

        return $products;
    }

Api

Route::get('products/{category_id}', 'ProductsController@select_category');

Когда я удаляю $category_id и где, есть только как Products::all(); отлично работает, но нужно указать, где искать.

Ссылка на указание $ category_id http://localhost:8000/api/products/?category_id=16

Ответы [ 4 ]

0 голосов
/ 18 апреля 2019

Я думаю, что это должно быть

 public function select_category(Request $request, $category_id){
        $products = Products::where('category_id', $category_id)->get();

        return $products;
    }

если URL-адрес

http://localhost:8000/api/products/16

и если URL-адрес

http://localhost:8000/api/products/?category_id=16

функция должна быть

public function select_category(Request $request){
            $products = Products::where('category_id', $request->input('category_id'))->get();

        return $products;
    }

первый параметр функции должен быть Request экземпляр класса

0 голосов
/ 18 апреля 2019

Убедитесь, что в вашем файле маршрутов ниже определения этого маршрута у вас нет аналогичной конечной точки, установленной для метода post. Так что у вас, скорее всего, есть:

Route::post('products/something', 'ProductsController@store');

это заменит ранее определенный.

Чтобы предотвратить это, вы можете изменить свой текущий маршрут на это:

Route::get('products/{category_id}', 'ProductsController@select_category')->where('category_id', '[0-9]+');
0 голосов
/ 18 апреля 2019

измените свой URL:

http://localhost:8000/api/products/16

также измените в файле представления:

<a href="{{ URL::to('products/'. $yourchategoryid ) }}">product</a>
0 голосов
/ 18 апреля 2019

В журнале указано, что произошла ошибка маршрута, это никак не связано с вашей моделью Eloquent

Проверьте, есть ли у вас другой маршрут, конфликтующий с этим


Изменить: После просмотра вашего URL вы должны использовать "http://localhost:8000/api/products/16" вместо" http://localhost:8000/api/products/?category_id=16"

Второй пытается получить доступ к вашему почтовому маршруту "Route :: post ('products' ..." ", потому что для Laravel все, что находится после"? ", Является параметром и не используется при обнаружении маршрута

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...