#laravel
#laravel
Вопрос:
Я пытаюсь показать сообщение по категориям, например, если я нажму категорию учебника, она покажет все сообщения с руководством по категориям. Но я получаю ошибку 404 not found.
Маршрут
Route::get('/tags/{tags}', 'PageController@post_tags');
Контроллер
public function post_tags(Tag $tags)
{
$data = Post::where('tags', $tags)->get();
return view('page.app', compact('data'));
}
Вид
@foreach($tags as $item)
<ul>
<li><a href="/tags/{{$item->tags}}">{{ $item->tags }}</a></li>
</ul>
@endforeach
Если мой код неверен, как правильно отобразить сообщение по категориям?
извините за мой плохой английский
Комментарии:
1. Это не похоже на правильную настройку базы данных для
Post
andTags
; у вас должна бытьTag.php
модель,Post.php
модель и сводная таблицаpost_tag
, затем связь междуPost
иTag
: посмотрите, как работаетbelongsToMany()
связь: laravel.com/docs/8.x/eloquent-relationships#many-to-many . Я подозреваю, что вашposts.tags
столбец содержит что-то вродеtutorial,something,another
, что вызовет у вас много проблем.
Ответ №1:
В вашем контроллере вы отправляете $data во внешний интерфейс, а не $tags, поэтому вы получаете доступ к данным через переменную $data.
@foreach($data as $item)
<ul>
<li><a href="/tags/{{$item->tags}}">{{ $item->tags }}</a></li>
</ul>
@endforeach