Route использует Slug, но для функции необходим id - PullRequest
0 голосов
/ 06 мая 2019

Я использую слагов для навигации по моему сайту, но мне нужен идентификатор, связанный с слагом для функции.

Функция:

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

Это функция, в которой мне нужно получить идентификатор. $ request-> id не работает, так как мой $ request-> id возвращает 'null'. Есть ли способ получить идентификатор, связанный с строкой slug / DB?

Если вам нужна дополнительная информация, пожалуйста, скажите мне.

Я пытался получить его с

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

и тому подобное, ничего не получалось.

Ответы [ 2 ]

1 голос
/ 06 мая 2019

Полагаю, вы переопределяете 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'));
}
1 голос
/ 06 мая 2019

Измените свой код на

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

если в одной категории есть один уникальный слаг, просто используйте first() вместо get(), и вы можете получить объект категории и использовать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...