Запросы по идентификатору или дружественному URL - Laravel / Eloquent - PullRequest
0 голосов
/ 06 сентября 2018

Я работаю над 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

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

Хотелось бы узнать лучшую практику для этого, кому-нибудь помочь?

1 Ответ

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

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

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

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

...