【发布时间】:2017-10-26 02:19:03
【问题描述】:
在数据库中我有一个名为资源的字段,在其中我保留了用户的权限,格式为 Json:
[
{
"rota":"reserva",
"sref":"oQueFazer",
"ordem":"1",
"recursos":[
"index",
"show",
"store",
"update"
],
"descricao":"Reservar",
"controller":"ReservasController"
},
{
"rota":"reserva",
"sref":"oQueFazer",
"ordem":"2",
"recursos":[
"index",
"show"
],
"descricao":"Reservas",
"controller":"ReservasController"
},
{
"rota":"usuario",
"sref":"oQueFazer",
"ordem":"3",
"recursos":[
"index",
"show"
],
"descricao":"Usuários",
"controller":"UsuariosController"
},
{
"rota":"feriado",
"sref":"home.feriado",
"ordem":"4",
"recursos":[
"index",
"show",
"store",
"update",
"destroy"
],
"descricao":"Feriados",
"controller":"FeriadosController"
},
{
"rota":"sala",
"sref":"home.sala",
"ordem":"5",
"recursos":[
"index",
"show"
],
"descricao":"Salas",
"controller":"SalasController"
}
]
当我在下面运行查询时,它会正确返回哪个用户拥有权限:
SELECT recursos from perfis
WHERE
JSON_CONTAINS(recursos, '{"controller": "FeriadosController"}');
几乎就在那里,通过上面的选择,我得到了我正在寻找的记录行,问题是它向我显示了资源字段中的整个 json 集合。 (他当然会这样做,这就是我要求的)。
所以为了给我带来某个控制器中的用户允许的权限,我做了以下选择:
SELECT JSON_EXTRACT(recursos, '$[0].recursos') permite from perfis
WHERE
JSON_CONTAINS(recursos, '{"controller": "FeriadosController"}');
回报是:
["index", "show", "store", "update"]
也就是说,一切正常,它显示了用户在给定控制器上的权限,问题是它显示了第一行 '$[0].recursos' 的 JSON 集合的权限,但这并不是我想要的,我想退货:
["index", "show", "store", "update", "destroy"]
用户对控制器HolidaysController的权限是什么
也就是说,我可以扫描控制器以在 json 中搜索,但我无法显示搜索到的 json 部分,有人对此有解决方案,jpa 经历过这个吗?
【问题讨论】:
标签: mysql sql json database collections