Laravel刀片迭代php数组/对象

时间:2017-08-07 15:02:21

标签: php laravel laravel-5.4 blade

我在输出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);
    }
}

在浏览器中输出到视图的数据是:

  • 递增
  • 存在
  • wasRecentlyCreated
  • 时间戳

    {“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}

理想情况下,我希望看到一个子弹点列表,例如:

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

2 个答案:

答案 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