尝试在视图返回中访问数组尝试获取非对象的属性

时间:2018-08-15 16:38:32

标签: php laravel laravel-5 laravel-5.2

我正在使用Laravel 5.2,正在尝试执行存储过程,并使用foreach循环在视图中显示结果。运行我的应用程序时,出现以下错误消息:

  

试图获取非对象的属性

如果我使用return或dump,则会得到以下结果:

Result

这是我的控制器代码:

public function VentasPorSucursal() {
    $values = [1, 25, 2, "NULL", "2018-08-10", "2018-08-10", "NULL", "NULL"];

    $data['data'] = DB::select('SP_RPT_VENTAS2 ?, ?, ?, ?, ?, ?, ?, ?', $values);

    //dump($data);
    return view('reportes.index')->with('data', $data);
}

这是我的index.blade.php

<div class="table-responsive">
        <table class="table table-striped table-bordered table-condensed table-hover">
            <thead>
                <th>Folio</th>
                <th>Fecha</th>
                <th>Sucursal</th>
                <th>Vendedor</th>
                <th>Cantidad</th>
                <th>Unidad</th>
                <th>Descripción</th>
                <th>Pzaz x Pq</th>
                <th>Precio</th>
                <th>Total</th>
                <th>Total Pzaz. Vendidas</th>
            </thead>
            @foreach ($data as $result)
                <tr>
                    <td>{{ $data->Folio }}</td>
                    <td>{{ $data->Fecha }}</td>
                    <td>{{ $data->Sucursal }}</td>
                    <td>{{ $data->Vendedor }}</td>
                    <td>{{ $data->Cantidad }}</td>
                    <td>{{ $data->Unidad }}</td>
                    <td>{{ $data->Descripcion }}</td>
                    <td>{{ $data->PzasxPq }}</td>
                    <td>{{ $data->Precio }}</td>
                    <td>{{ $data->Total }}</td>
                    <td>{{ $data->TotalPzasVendidas }}</td>
                </tr>

            @endforeach
        </table>
    </div>
    {{$data->render()}}

寻找答案,我发现使用'->'表示数组,也许我的代码将结果作为对象返回,我需要使用'[]',但我不知道该怎么办它。

可能是什么问题?

2 个答案:

答案 0 :(得分:4)

查看转储结果。您传递给查看的数据数组包含一个data键,该键包含从查询返回的所有对象。因此,您可以像这样遍历数据变量数据对象:

@foreach ($data['data'] as $result)
<tr>
   <td>{{ $result->Folio }}</td>
   <td>{{ $result->Fecha }}</td>
   <td>{{ $result->Sucursal }}</td>
   <td>{{ $result->Vendedor }}</td>
   <td>{{ $result->Cantidad }}</td>
   <td>{{ $result->Unidad }}</td>
   <td>{{ $result->Descripcion }}</td>
   <td>{{ $result->PzasxPq }}</td>
   <td>{{ $result->Precio }}</td>
   <td>{{ $result->Total }}</td>
   <td>{{ $result->TotalPzasVendidas }}</td>
</tr>
@endforeach

答案 1 :(得分:1)

您的第一个问题是在foreach循环中,我在下面复位,其次是 如果返回结果是数组,则可以按如下所示进行访问。

  @foreach ($data as $result)
            <tr>
                <td>{{ $result["Folio"]}}</td>
                <td>{{ $result["Fecha"] }}</td>
                <td>{{ $result["Sucursal"] }}</td>
                <td>{{ $result["Vendedor"] }}</td>
                <td>{{ $result["Cantidad"] }}</td>
                <td>{{ $result["Unidad"] }}</td>
                <td>{{ $result["Descripcion"] }}</td>
                <td>{{ $result["PzasxPq"] }}</td>
                <td>{{ $result["Precio"] }}</td>
                <td>{{ $result["Total"] }}</td>
                <td>{{ $result["TotalPzasVendidas"] }}</td>
            </tr>

        @endforeach