質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
foreach

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

2474閲覧

laravelの@foreachでエラーについて

yamadaippei

総合スコア12

foreach

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/08/18 06:58

質問失礼します。
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>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決しました。
ありがとうございました。

投稿2020/08/18 11:09

yamadaippei

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問