在Laravel中显示和引用json_encode

时间:2018-11-07 16:10:02

标签: php laravel

我不确定显示此的最佳方法是什么。我正在为我的网站创建一个活动日志,该日志可以在不同的控制器之间进行调整。这是我的编码代码:

$properties = [
    'last_name' => $request->last_name,
    'first_name' => $request->first_name,
    'dob' => $request->dob,
    'unique_id' => $unique_id,
    'doctor_id' => $doctor->id
];
$log->properties = json_encode($properties);

但是,其他控制器上的属性可能具有revenueaddress等字段,等等。

在我的活动日志控制器的显示页面上,现在我正在使用{{$log->properties}}显示对象。它返回类似以下输出的内容:

{"last_name":"Test4","first_name":"Test4","dob":"1984-09-13","unique_id":"Test4Test41984-09-13","doctor_id":19}

最终,我想做的是让它以<strong>标签的形式显示对象的每个项目,然后显示相关信息。因此,在简单的html中,上述属性如下所示:

<strong>last_name:</strong> Test4<br>
<strong>first_name:</strong> Test4<br>
<strong>dob:</strong> 1984-09-13<br>
<strong>unique_id:</strong>Test4Test41984-09-13<br>
<strong>doctor_id:</strong> 19

由于每个属性中的键都不同,具体取决于从哪个控制器中拉出的,所以我不确定如何显示它。我什至在找出如何引用对象内部时遇到麻烦。例如,{{$key->properties->last_name}}不引用姓氏。 {{$key->properties()->last_name}}也没有。

1 个答案:

答案 0 :(得分:1)

当您使用json_encode将对象存储在 $ log-> properties 中时,您正在将对象转换为json字符串,这是因为您不能使用 $ key-> properties- > last_name ,为此,您可以在 $ key-> properties 变量中使用json_decode,然后就可以访问每个属性。

要显示数据而不考虑变量名称,您可以执行以下操作:

$properties = json_decode($key->properties, true);

foreach ($properties as $key => $value) {
    echo '<strong>'.$key.':</strong> '.$value.'<br>';
}

或者您可以使用Blade来显示此内容,这是您需要将json转换为数组,然后遍历其键和值。

相关问题