Laravel刀片迭代php数组/对象



我在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 AppHttpControllers;
use AppHyfes;
use IlluminateHttpRequest;
class CaptainController extends Controller
{
public function getLiveData ()
{
$datapoint = Hyfes::find(1);
return view('captain.show')->with('datapoint', $datapoint);
}
}

输出到浏览器中视图的数据如下所示:

  • 递增
  • 存在
  • 是最近创建的
  • 时间 戳

    {"日期":"08/07/2017","时间":"12:02:25","boat_name":"气旋","current_location":"北格林威治码头","状态":"停靠","登船":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}

理想情况下,我希望看到一个项目符号列表,例如:

  • 日期: 8/07/2017
  • 时间: 12:00:01
  • boat_name:旋风

函数Hyfes::find(1)将返回AppHyfes类型的对象,而不是数组。通过循环键值对,您将获得所有属性。Laravel添加了许多额外的属性来跟踪对象。

更好的方法是使用 LaravelgetAttributes函数。这将仅获取从数据库加载的属性。 这样:

@foreach ($datapoint->getAttributes() as $key => $value)
<li>{{ $key }}: {{ $value }}</li>
@endforeach

您正在尝试迭代模板中的非数组变量。您必须明确您希望在模板中看到的对象的值。

@extends('layouts.app')
@section('content')
<ul>
<li>date: {{ $datapoint->date }}</li>
<li>time: {{ $datapoint->time }}</li>
<!-- and so on -->
</ul>
@endsection

最新更新