如何检索 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
这应该可行,但如果您有错误,请在此处提供。
我正在通过开发一个小型博客来学习 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
这应该可行,但如果您有错误,请在此处提供。