質問失礼します。
mysqlからのデータを一覧表示する際のエラーに関してアドバイスをお願いします。
エラー内容
Invalid argument supplied for foreach()
controller
use App\date_table; class work extends Controller { public function showPage() { return view('index'); // resource/views/index.blade.phpを表示する } public function doGet() { $data = DB::table('date_table')->get(); return view('index', compact('data')); } }
model
class Date_table extends Model { protected $table = 'date_table'; public $timestamps = false; public function getData() { $data = DB::table($this->table)->get(); return $data; } }
view
@foreach($data ?? '' as $d) <TR> <TH> {{ $d->No ?? '' }} </TH> <TH> {{ $d->Year ?? '' }} </TH> <TH> {{ $d->Month ?? '' }} </TH> <TH> {{ $d->Day ?? '' }} </TH> <TH> {{ $d->StartTime ?? '' }} </TH> <TH> {{ $d->EndTime ?? '' }} </TH> </TR> @endforeach
エラー内容から調べたことは、配列ではないため使えませんでした。
ですので以下のように修正しましたが、
@foreach((array)$data ?? '' as $d)
続いて
$data is undefined Make the variable optional in the blade template. Replace {{ $data }} with {{ $data ?? '' }} Make variable optional
とのエラーが消えなくなりました。
どのように解決すればいいかアドバイスをいただけないでしょうか。
よろしくお願い致します。
追記ですが以下のviewではしっかり表示できます。
なので自分はなぜ配列ではないとエラーが出るのか理解ができない状態です。
<?php $i = 0; ?> <TR> <TH> {{ $data[$i]->No ?? '' }} </TH> <TH> {{ $data[$i]->Year ?? '' }} </TH> <TH> {{ $data[$i]->Month ?? '' }} </TH> <TH> {{ $data[$i]->Day ?? '' }} </TH> <TH> {{ $data[$i]->StartTime ?? '' }} </TH> <TH> {{ $data[$i]->EndTime ?? '' }} </TH> <TR>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。