leshikgo
@leshikgo

Как вывести все посты из категорий?

Здравствуйте. Условно есть посты, есть категории. Реализовал отношения один ко многим. Как можно теперь через пост получить категорию?
class Tag extends Model
{
    public function recipes() {
        return $this->hasMany('App\Recipe');
    }
}

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

$posts = Recipe::with('tags')->get();
@foreach($recipes as $recipe)
$recipe->tags->name  //так не могу получить имя категории данного поста, что я делаю не так?
  @endforeach
  • Вопрос задан
  • 982 просмотра
Решения вопроса 1
Не совсем понятна используемая структура для ведения тегов к материалам.

Реализуйте следующую архитектуру:
6bea3a74a58e446dbba5b26c00e3a7b9.png
class Recipe extends Model
{
  public function tag_links()
  {
    return $this->hasMany('Recipe_Tag', 'recipe_id');
  }
}

class Recipe_Tag extends Model
{
  public function tag()
  {
    return $this->hasOne('Tag', 'tag_id');
  }
}

class Tag extends Model
{
}

Использование:

$receipes = Recipe::with('tag_links')->get();
foreach ($receipes as $receipe)
{
  echo '<h1>'.$receipe->title.'</h1>';
  echo 'Категории: ';
  foreach ($receipe->tag_links as $tag_link)
  {
    echo $tag_link->tag->name;
  }
}

Преимущество такого подхода объяснять не приходится.

P.S. Пример отображения информации через контроллер - предоставлен для наглядности.

Удачки! ;-)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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