我的代码的Json Column名为:json,用于自定义用户字段。我希望我的数据表将json列作为单独的字段进行显示。所以基本上如果我的模型将数据返回为:
{
"id":1
"json" : {
"name": "joe"
}
}
我需要它转换为(当我调用Model :: all()或Model :: paginate()时):
{
"id":1
"name": "joe"
}
这样我的数据表就可以显示这些数据了。我不能将appends属性添加到我的模型中,因为这个json是动态字段,因此从一开始就不知道。我试过这两个变种:
public function getJsonAttribute($value)
{
$json = json_decode($value);
foreach ($json as $k => $v) {
array_push($this->appends, $key);
// or
$this->attributes[$k] = $v;
}
return $json;
}
但它们都不起作用。
答案 0 :(得分:2)
在你的情况下,这可能是有效的。但它的多数组意味着你可以添加一个foreach循环。然后才工作。
在您的代码中 $ key 未定义
public function getJsonAttribute($value)
{
$json = json_decode(json_encode($value),TRUE);
$jsonArr = [];
foreach ($json as $k => $v) {
if($k == "id")
$jsonArr['id'] = $v;
if($k == "json" && empty($v['name']) === false)
$jsonArr['name'] = $v['name'];
}
return (object)$jsonArr;
}