好的,这个问题可能很广泛,但是我会尽力解释。
基本上,我有一个“标签”表和一个“帖子”表。在我雄辩的过程中,我的posts表有一个名为tag_ig
的列。该列基本上将标签表id
输入到帖子表tag_id
中。
我目前无法获得的是,如何获取数据? 假设这是我的代码:
$postsWithTags = Post::with(‘tags’)->get();
现在我可以在刀片中使用foreach并获取名为tag_id
数据的列。但这就是问题。如果我的tag_id
列中有此数据(1、2、3、4),如何获取该数据并显示实际的标签名称?
我有一个标签表和一个帖子表。我在名为tag_id
的帖子表中使用一列存储标签表中的多个标签ID(这是我刚刚解释的摘要)。
有没有更好的方法来实现这一目标?我需要创建一个单独的表吗?还是坚持下去?以及如何从一列中获取多个值,这些数据的格式如下(1、2、3、4),并且还显示标签名称。
更新
表结构:
Tags
|_ id
|_ name
|_ deleted_at
|_ created_at
|_ updated_at
Posts
|_ id
|_ tag_id
|_ title
|_ content
|_ deleted_at
|_ created_at
|_ updated_at
答案 0 :(得分:3)
您在这里拥有多对多关系。一个帖子可以有多个标签,而一个标签可以属于多个帖子。您需要使用数据透视表打破这种关系。
post_tag | _ post_id | _ tag_id
然后在您的$date = [2018-06-16,2018-06-18,2018-06-19,2018-06-20]
$yes =[0,2,3,4]
$no = [2,30,26,0]
对象上添加以下方法
Post
您现在可以做
function tags() {
return $this->belongsToMany(Tag::class);
}
注意:您不再需要posts表中的tag_id列。
以下是此更改前后的关系