如何检索 post 所属类别的名称

How can I retrieve the name of the categories to which a post belongs

我正在通过开发一个小型博客来学习 Laravel 以了解该框架及其所提供的功能。我现在面临的问题是 "How can I retrive the name of the categories to which the post originally belong to"

我在 post 和类别之间的关系是多对多的。 我有三个 Tables

Post
Category
CategoryPost

我的Post模特

public function categories()
    {
        return $this->belongsToMany('App\category');
    }

我的类别模型

public function posts()
    {
        return $this->belongsToMany('App\Post');
    }

除此之外,我还没有制作任何枢轴模型table。 我需要成功吗?

我的 pivot table 中的记录如下:

    id  category_id  post_id  
------  -----------  ---------
     6            1         16
     7            2         16
     8            3         16
     9            1         17
    10            3         17
    11            1         18
    12            2         18

我想显示一个post原来所属的分类名称,方便用户在编辑页面添加或删除分类。

这些是我的迁移:

Post Table

public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('user_id');
            $table->Integer('status_id');
            $table->string('title');
            $table->text('body');
            $table->text('media');
            $table->string('tags');
            $table->timestamps();
        });
    }

类别Table:

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

类别Post Table:

 public function up()
{
    Schema::create('category_post', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('category_id');
        $table->integer('post_id');
        $table->timestamps();
    });
}

编辑迁移:

分类帖子Table

public function up()
{
    Schema::create('category_post', function (Blueprint $table) {
        $table->increments('id');
            $table->Integer('category_id')->unsigned();
            $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
            $table->Integer('post_id')->unsigned();
            $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');
            $table->timestamps();
    });
}

然后在你的控制器中:

public function edit(Post $post) {
 $post=Post::with('categories')->find($post->id);
 $categories=Category::all(); 

 return view('admin.pages.post.edit',compact('post','categories')); }

在您的 blade 中,您可以这样做:

@foreach($post->categories as $category)
    {{ $category->name }}
@endforeach

这应该可行,但如果您有错误,请在此处提供。