0

我正在使用 slugs 在我的网站中导航,但我需要将 id 连接到 slug 以实现功能。

功能:

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);

和类似的东西,没有任何效果。

4

2 回答 2

1

将您的代码更改为

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

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

于 2019-05-06T11:37:37.077 回答
1

我想你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'));
}
于 2019-05-06T11:38:04.660 回答