为了账号安全,请及时绑定邮箱和手机立即绑定

路由使用 Slug,但功能需要 id

路由使用 Slug,但功能需要 id

PHP
蝴蝶不菲 2021-06-01 10:00:16
我正在使用 slugs 在我的网站中导航,但我需要连接到 slug 的 id 才能使用。功能:public function categories(Request $request, $slug){    $categories = Category::where('slug', $slug)->get();    $announcements = Announcement::where('category_id', $request->id)->paginate(5);    $category_lists = Category::all();    return view('announcements.index', compact('announcements', 'categories', 'category_lists'));}这是我需要获取 ID 的功能。$request->id 不起作用,因为我的 $request->id 返回“null”。有没有办法获得连接到 slug/DB 行的 id?如果需要更多信息,请告诉我。我试过用$announcements = Announcement::where('category_id', Category::get(id))->paginate(5);类似的事情,没有任何效果。
查看完整描述

2 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

我想你getRouteKeyName在你的Category模型中覆盖了:


public function getRouteKeyName()

{

    return 'slug';

}

然后你可以通过Category路由模型绑定得到这样的结果:


public function categories(Request $request, Category $category)

{

    $announcements = Announcement::where('category_id', $category->id)->paginate(5);

    $category_lists = Category::all();

    return view('announcements.index', compact('announcements', 'category', 'category_lists'));

}


查看完整回答
反对 回复 2021-06-04
?
浮云间

TA贡献1829条经验 获得超4个赞

将您的代码更改为


$category = Category::where('slug', $slug)->first();

$announcements = Announcement::where('category_id', $category->id)->paginate(5);

如果一个类别有一个唯一的 slug,只需使用first(), 而不是,get()您就可以获得类别对象并使用它。


查看完整回答
反对 回复 2021-06-04
  • 2 回答
  • 0 关注
  • 165 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信