Laravel 6,9 принадлежит ToMany Relationships вернуть одну коллекцию - PullRequest
2 голосов
/ 19 февраля 2020

У меня много-много отношений. У меня есть три таблицы:

posts
posts_tag
tags

Таблица "сообщения" имеет стандартные поля.

Структура таблицы "posts_tag":

Schema::create('post_tag', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->bigInteger('post_id')->unsigned();
    $table->foreign('post_id')->references('id')->on('posts');

    $table->bigInteger('tag_id')->unsigned();
    $table->foreign('tag_id')->references('id')->on('tags');
});

Структура Таблица "теги":

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

Отношение определено в модели:

 class Tag extends Model
{

        public function posts()
    {
        return $this->belongsToMany(Post::class,'post_tag', 'post_id', 'tag_id');
    }
}

Я вызываю метод $tag->posts:

public function getPostsByTag($id)
{
    $tag = Tag::find($id);

    dd($tag->posts);

}

Я получаю только один массив:

Illuminate\Database\Eloquent\Collection {#571 ▼
  #items: array:1 [▶]
}

скриншот базы данных

Буду благодарен за любую помощь друзьям! Если вы извините за мой Engli sh, я в процессе обучения!

1 Ответ

0 голосов
/ 19 февраля 2020

В вашем теге модальное

class Tag extends Model
{
    public function posts()
    {
        return $this->belongsToMany(Post::class,'post_tag', 'post_id', 'tag_id');
    }
}

В вашем сообщении модальное

class Post extends Model
{
    public function tags()
    {
        return $this->belongsToMany(Tag::class,'post_tag', 'tag_id', 'post_id');
    }
}

В вашем контроллере

public function getPostsByTag($id)
{
    $tag = Post::with('tags')->find($id);
    dd($tag);
}
...