2

Laravel を 5.2 から 5.3 にアップグレードしていますが、Blade ビューの 1 つが機能しなくなりました。含まれているビューに配列を渡してループします。ディレクティブを使用してforelseいますが、Undefined offset: 1 エラーが発生し続けます。

ビュー呼び出しを含むコントローラーのスニペットは次のとおりです。

$transactions = $committees->transactions()
    ->where('FiledDate', '<=', $to)  // Upper date
    ->where('FiledDate', '>=', $from)  // Lower date
    ->get();

return view('committees.show',
    [ 
        'data' => $data,
        'transactions' => $transactions,
    ]);

ここにブレードファイルがあります。

<table class="table table-striped">
<thead>
    <tr><th class="text-center" colspan="5">Transactions</th></tr>
    <tr>
        <th class="text-center">TranId</th>
        <th class="text-center">Tran Date</th>
        <th class="text-center">SubType</th>
        <th class="text-center">Filed Date</th>
        <th class="text-center">Amount</th>
    </tr>
</thead>
<tbody>
@forelse ($transactions AS $transaction)
    <tr>
        <td class="text-center">{{ $transaction->TranId }}</td>
        <td class="text-center">{{ $transaction->TranDate }}</td>
        <td class="text-center">{{ $transaction->SubType }}</td>
        <td class="text-center">{{ $transaction->FiledDate }}</td>
        <td class="text-center">{{ number_format($transaction->Amount, 2, '.', ',') }}</td>
    </tr>
@empty
    <tr><td colspan="5">No Transactions</td></tr>
@endforelse
</tbody>              

ダミーのトランザクション配列を作成しましたが、それでも同じエラーが発生します。

また、foreachディレクティブを使用すると正常に動作しますが、レコードがないことを確認する追加のテストが必要です。

4

4 に答える 4

0

トランザクションの内容を vardump してみましたか? forelse ループでアクセスしているフィールドが含まれていない可能性があるため、エラーが発生します。

forelse ループで {{var_dump($transaction)}} を実行してみて、アクセスしているすべてのフィールドがコード内にあることを確認してください。

于 2016-08-30T20:57:11.467 に答える