我在输出Laravel刀片中的键值对列表时遇到问题。
我的show.blade.php模板是:
@extends('layouts.app')
@section('content')
<ul>
@foreach ($datapoint as $key => $value)
<li>{{ $key, $value }}</li>
@endforeach
</ul>
{{ $datapoint }}
@endsection
显示此模板的控制器是:
<?php
namespace App\Http\Controllers;
use App\Hyfes;
use Illuminate\Http\Request;
class CaptainController extends Controller
{
public function getLiveData ()
{
$datapoint = Hyfes::find(1);
return view('captain.show')->with('datapoint', $datapoint);
}
}
在浏览器中输出到视图的数据是:
时间戳
{“date”:“08/07/2017”,“time”:“12:02:25”,“boat_name”:“cyclone”,“current_location”:“North Greenwich Pier”,“status”: “停靠”, “开始”:26 “下船”:2 “people_on_board”:24, “current_speed”:0 “hotel_power”:231, “battery_power_demand”:342, “battery_output_power”:23, “engine_output_power”: 12, “battery_power_stored”:100, “battery_depth_of_discharge”:323, “fuel_consumption_rate”:7, “氮氧化物”:432, “CO2”:213, “battery_state_of_charge”:100, “ID”:1}
理想情况下,我希望看到一个子弹点列表,例如:
答案 0 :(得分:2)
函数Hyfes::find(1)
将返回App\Hyfes
类型的对象,而不是数组。通过循环键值对,您将获得所有属性。 Laravel添加了许多额外的属性来跟踪对象。
更好的方法是使用Laravel getAttributes
功能。这只会获取从数据库加载的属性。
像这样:
@foreach ($datapoint->getAttributes() as $key => $value)
<li>{{ $key }}: {{ $value }}</li>
@endforeach
答案 1 :(得分:2)
您正在尝试迭代模板中的非数组变量。您必须明确要在模板中看到的对象的值。
@extends('layouts.app')
@section('content')
<ul>
<li>date: {{ $datapoint->date }}</li>
<li>time: {{ $datapoint->time }}</li>
<!-- and so on -->
</ul>
@endsection