我正在通过开发一个小型博客来学习Laravel,以学习该框架及其所提供的内容。我现在面临的问题是“如何检索帖子最初所属的类别的名称”
我的职位和类别之间的关系是很多很多的。 我有三个桌子
a = 'swift'
shift_amount = 2
a_shifted_left = a[shift_amount:] + a[:shift_amount]
a_shifted_right = a[-shift_amount:] + a[:-shift_amount]
我的帖子模型
Post
Category
CategoryPost
我的类别模型
public function categories()
{
return $this->belongsToMany('App\category');
}
除此之外,我没有对数据透视表进行任何建模。 我需要做吗?
我的数据透视表中的记录如下:
public function posts()
{
return $this->belongsToMany('App\Post');
}
我想显示帖子最初所属的当前类别的名称,以便用户可以在编辑页面中添加或删除类别。
这些是我的迁移:
发布表
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
类别表:
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();
});
}
CategoryPost表格:
public function up()
{
Schema::create('categories', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->text('description');
$table->timestamps();
});
}
答案 0 :(得分:2)
编辑迁移:
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')); }
在刀片中,您可以执行以下操作:
@foreach($post->categories as $category)
{{ $category->name }}
@endforeach
这应该可以,但是如果您有错误,请在此处提供。