Запросы по идентификатору или дружественному URL-адресу - Laravel / Eloquent

Я работаю над REST API с laravel.

У меня есть таблица блогов

Schema::create('blogs', function (Blueprint $table) {
    $table->increments('id');
    $table->string('title');
    $table->longtext('body');
    $table->string('friendly_url');
});

У меня есть мой маршрут, настроенный для контроллера шоу, который будет отображать блог, поиск по идентификатору

Маршрут

Route::get('/{id}', 'BlogController@show');

Контроллер

public function show($id)
{
    $blog = Blog::find($id);
        if (!$blog) {
            return response()->json([
                'message' => '404 Not Found'
            ], 400);
        }
    return response()->json($blog, 200);
}

Итак, получив доступ

/api/blog/1

я получил

{
    "id": 1,
    "title": "title of my blog",
    "body": "conteudo do meu blog",
    "friendly_url": "title-of-my-blog",
    "category_id": 2
}

но я хочу проверить блог также по удобному URL

/api/blog/{friendly-url} OR {id}

/api/blog/title-of-my-blog

и получите тот же результат

Хотелось бы узнать, как это сделать лучше всего, кому может помочь?

Я не сказал, что у меня проблема, я спросил его, что он хочет делать.

Yung Silva 06.09.2018 16:20

проблема в том, что маршрут получает только один параметр, идентификатор

Yung Silva 06.09.2018 16:21
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
592
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мне обычно не нравится идея использовать id или "slug" / "friendly url" с той же структурой ссылок, но разве вы не можете просто сделать:

$blog = Blog::where('id', $id)->orWhere('friendly_url', $id)->first();

Я бы рекомендовал просто использовать удобный URL. У вас есть это поле по какой-то причине, хотя оно должно быть уникальным в базе данных.

Спасибо большое

Yung Silva 06.09.2018 16:25

Другие вопросы по теме