Найти все сообщения, связанные с тегом в laravel

Я создаю блог с laravel, где у сообщения много тегов. Я хочу отфильтровать все сообщения по тегу. означает, что если я нажму на тег "PHP", я хочу получить все связанные сообщения.

Вот мой код

У меня есть две таблицы сначала для тегов, а вторая таблица для ссылки с сообщениями

tag_table

 public function up()
{
    Schema::create('tags', function (Blueprint $table) {
        $table->increments('id');
        $table->string('tags');
        $table->timestamps();
    });
}

таблица тегов отношений

public function up()
{
    Schema::create('article_tag', function (Blueprint $table) {
      $table->increments('id');
      $table->integer('article_id')->unsigned();
      $table->foreign('article_id')->references('id')->on('articles');
      $table->integer('tag_id')->unsigned();
      $table->foreign('tag_id')->references('id')->on('tags');
    });
}

Модель статьи

class Article extends Model
{
 public function tags()
 {
  return $this->belongsToMany('App\Tag');
 }
} 

модель тега

class Tag extends Model
{
  public function articles()
 {
   return $this->belongsToMany('App\Article');
 }
}

Контроллер тегов

 public function show($id,$name)
{
   //here I received tag id and name.

 $list->with('articles')->get();
 return view('articles.tagshow')->withList($list);

}

Вы читали красноречивые отношения. Если нет, то рекомендую прочитать laravel.com/docs/5.6/eloquent-relationships

pinoyCoder 24.03.2018 10:18
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
4 467
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Eloquent предлагает метод где, который позволяет фильтровать атрибуты связанных моделей. Чтобы отфильтровать статьи по именам связанных с ними тегов, необходимо сделать следующее:

$articles = Article::whereHas('tags', function($query) use ($tagName) {
  $query->whereName($tagName);
})->get();

Однако в вашем случае это должно быть еще проще, потому что у вас уже есть идентификатор тега в вашем контроллере, поэтому вы можете просто получить модель тега по идентификатору, а затем вернуть связанные статьи:

public function show($id,$name) {
  return Tag::findOrFail($id)->articles;
}

Дополнительную информацию можно найти в документации по запросам отношений: https://laravel.com/docs/5.6/eloquent-relationships#querying-relations

Другие вопросы по теме