Получение сообщений, связанных с категорией в Laravel - PullRequest
1 голос
/ 04 марта 2020

У меня есть таблица категорий, таблица сообщений и таблица, в которой показана связь между сообщением и категорией: Categories_Posts

**Posts**
id | title | text

**Categories_Posts**
category_id | post_id

**Category**
id | name

У меня есть такие категории, как Musi c, Новости, Видео.

Модели

class Post extends Model
{
    public function categories()
    {
        return $this->belongsToMany(Category::class, 'categories_posts');
    }
}

class Category extends Model
{
    public function posts()
    {
        return $this->belongsToMany(Post::class, 'categories_posts');
    }
}

Как отобразить сообщения, связанные с каждой категорией, на боковой панели

Я сделал это

@foreach($posts as $post)
    <div> {{ $post->subject }}</div>
    <div> {{ $post->image }}</div>
    @foreach($post->categories as $category)
        <div> {{ $category->name}}</div>
    @endforeach
@endforeach

Это отображает все сообщения из каждой категории на боковой панели, но у меня есть место на боковой панели, где я хочу отображать только сообщения только для видео, место на боковой панели, где я хочу отображать сообщения только для музыки c и др. c.

Как я могу это сделать?

Надеюсь, вы меня понимаете

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Вы можете использовать with() метод.

$data = Post::with('categories')->get();

на ваш взгляд:

@foreach($data as $post) // will loop over posts and show title
    <div>{{$post->title }} </div>
    @foreach($post->categories as $category)
         <div> {{ $category->name}} </div>
    @endforeach
@endforeach
0 голосов
/ 04 марта 2020

Просто вставьте этот код в свой контроллер

$posts = Post::with('categories')->get();
return view('bladefilelocation', compact('posts'));



@foreach($posts as $post) // will loop over posts and show title
         <div> {{ $post->title }}   </div>
    @foreach($post->categories as $category)
         <div> {{ $category->name}} </div>
    @endforeach
@endforeach
...