如何从laravel中的一列获取多个值

时间:2018-06-21 06:32:04

标签: json laravel eloquent

好的,这个问题可能很广泛,但是我会尽力解释。

基本上,我有一个“标签”表和一个“帖子”表。在我雄辩的过程中,我的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

1 个答案:

答案 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列。

以下是此更改前后的关系

Before

After