@Mr-Governor
Губернирую

Как получить (количество записей с условием) из связующей модели?

Есть следующие таблицы: 5ed8b1ff7218b251421457.png и модели Article, Tag и Comment.
При клике на тег, нужно получить список статей с определенным тегом.

Дело в том, что таблица articles не знает о тегах и данные можно получить только из таблицы article_tag, у которой нет модели.
Временно решил вопрос без моделей так:
$countArticles = DB::select( 'SELECT COUNT(*) AS c FROM article_tag WHERE tag_id = ?;', [$tagID] )[0]->c;

Но хочется более кошерно. Жду советы.
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
aleksejjjj
@aleksejjjj
Доки https://laravel.com/docs/7.x/eloquent-relationship...
// Модель
class Tag
{
    public function articles()
    {
        $this->belongsToMany(Article::class);
    }
}

// Теги с количеством статей
$tags = Tag::withCount('articles')->get();

// Вывод в blade
@foreach($tags as $tag)
    {{ $tag->name }} ({{ $tag->articles_count }})
@endforeach
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы