使用Json的Laravel/PHP MySQL一对多关系

使用Json的Laravel/PHP MySQL一对多关系,php,mysql,json,laravel,laravel-5,Php,Mysql,Json,Laravel,Laravel 5,首先,以Json列的形式存储一对多关系是一个好主意吗?如果是的话,我如何用laravel编写查询来检索数据 例: 我有活动表和垂直表 活动表 id | activity | verticals 1 | Dusting | [1,2] 2 | Oiling | [3] 3 | Mopping | [1,2,3] 垂直表 id | vertical 1 | House Keeping 2 | Pantry 3 | Engineering & Machinery 现在

首先,以Json列的形式存储一对多关系是一个好主意吗?如果是的话,我如何用laravel编写查询来检索数据

例:

我有活动表和垂直表

活动表

id | activity | verticals
1  | Dusting  | [1,2]
2  | Oiling   | [3]
3  | Mopping  | [1,2,3]
垂直表

id | vertical
1  | House Keeping
2  | Pantry
3  | Engineering & Machinery 
现在,在显示活动列表的仪表板中,结果应该是

id | activity | verticals
1  | Dusting  | Housekeeping, Pantry
2  | Oiling   | Engineering & Machinery
3  | Mopping  | Housekeeping, Pantry, Engineering & Machinery
现在,在传统的非json方法中,我会使用laravel Eloquent的self::hasMany,但是如果使用json,我可以这样做吗


是否也可取?

我创建了一个包含JSON关系的包:

您可以创建如下多对多关系:

类活动扩展模型
{
使用\Staudenmeir\EloquentJsonRelations\hasjsonrelations;
受保护的$casts=[
“垂直”=>“json”,
];
公共职能垂直()
{
返回$this->belongsToJson(垂直::类,“垂直”);
}
}
类垂直扩展模型
{
使用\Staudenmeir\EloquentJsonRelations\hasjsonrelations;
公共职能活动()
{
返回$this->hasManyJson(Activity::class,'verticals');
}
}

我创建了一个包含JSON关系的包:

您可以创建如下多对多关系:

类活动扩展模型
{
使用\Staudenmeir\EloquentJsonRelations\hasjsonrelations;
受保护的$casts=[
“垂直”=>“json”,
];
公共职能垂直()
{
返回$this->belongsToJson(垂直::类,“垂直”);
}
}
类垂直扩展模型
{
使用\Staudenmeir\EloquentJsonRelations\hasjsonrelations;
公共职能活动()
{
返回$this->hasManyJson(Activity::class,'verticals');
}
}

至少可以说,你的问题非常令人困惑。在数据库中保存json几乎是不可取的。@Amarnasan。。让我换一种说法,你能给我一个查询来获得仪表板结果吗?至少可以说,你的问题非常令人困惑。在数据库中保存json几乎是不可取的。@Amarnasan。。让我换一种说法,你能给我一个查询来获得仪表板结果吗