【问题标题】:Querying by id or friendly URL - Laravel/Eloquent通过 id 或友好 URL 查询 - Laravel/Eloquent
【发布时间】:2019-02-11 20:02:24
【问题描述】:

我正在使用 laravel 开发一个 REST API。

我有一个博客表

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

我为显示控制器设置了我的路由,它将显示由 id 搜索的博客

路线

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

得到同样的结果

我想知道执行此操作的最佳做​​法,有人帮忙吗?

【问题讨论】:

  • 我没有说我有问题,我问他想做什么。
  • 问题是路由只接收一个参数,就是id

标签: php laravel api eloquent laravel-5.6


【解决方案1】:

我通常不喜欢使用具有相同链接结构的 id 或“slug”/“friendly url”的想法,但你不能这样做:

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

我建议只使用友好的网址。您拥有该字段是有原因的,尽管它在数据库中应该是唯一的。

【讨论】:

  • 非常感谢
猜你喜欢
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 2014-12-10
  • 2020-06-09
  • 2017-03-06
  • 1970-01-01
  • 2015-06-02
  • 1970-01-01
相关资源
最近更新 更多