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

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

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

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

Laravel

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

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

配列

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

Q&A

解決済

1回答

1645閲覧

laravelにて@foreachでの繰り返しのエラー

yamadaippei

総合スコア12

foreach

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

Laravel

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

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

配列

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

0グッド

0クリップ

投稿2020/08/18 05:00

編集2020/08/18 05:38

質問失礼します。
Laravelにてmysqlのデータを取得後にその一覧を表示するプロジェクトを作成しているのですが、@foreachでの繰り返しがうまく行きません。
アドバイスをお願いいたします。

エラー内容

Invalid argument supplied for foreach()

mvcの流れが以下になります。
controller

use App\date_table; class work extends Controller { 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が使えないと出てきたため 

@foreach((array)$data ?? '' as $d)

とすれば解決できると思いましたが、今度は

 Make the variable optional in the blade template. Replace {{ $data }} with {{ $data ?? '' }}

とのエラーが消えなくなりました。

解決したいことは、データを@foreachで一覧表示できるように改善したいです。

@foreachではありませんが表示自体はできます。
添字での表示ができるので配列ではないのでしょうか?

<?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ページで確認できます。

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

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

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

m.ts10806

2020/08/18 05:12

コードはマークダウンのcode機能にてご提示ください
yuki84web

2020/08/18 06:47

$dataの中身をvar_dump等の出力結果で掲載出来ますか?
yamadaippei

2020/08/18 07:13 編集

@yuki84web様 <?php var_dump($data); ?> とすると$data is undefinedとなります。 <?php var_dump($data ?? ''); ?> とすると string(0) "" と出た後にpostすると object(Illuminate\Support\Collection)#255 (1) { ["items":protected]=> array(4) { [0]=> object(stdClass)#257 (9) { ["id"]=> int(1) ["No"]=> int(1) ["Year"]=> int(2013) ["Month"]=> int(10) ["Day"]=> int(1) ["StartTime"]=> string(5) "09:00" ["EndTime"]=> string(5) "20:00" ["created_at"]=> NULL ["updated_at"]=> NULL } [1]=> object(stdClass)#259 (9) { ["id"]=> int(2) ["No"]=> int(1) ["Year"]=> int(2013) ["Month"]=> int(10) ["Day"]=> int(2) ["StartTime"]=> string(5) "09:00" ["EndTime"]=> string(5) "20:00" ["created_at"]=> NULL ["updated_at"]=> NULL } [2]=> object(stdClass)#260 (9) { ["id"]=> int(3) ["No"]=> int(1) ["Year"]=> int(2013) ["Month"]=> int(10) ["Day"]=> int(3) ["StartTime"]=> string(5) "09:00" ["EndTime"]=> string(5) "20:00" ["created_at"]=> NULL ["updated_at"]=> NULL } [3]=> object(stdClass)#261 (9) { ["id"]=> int(4) ["No"]=> int(2) ["Year"]=> int(2013) ["Month"]=> int(10) ["Day"]=> int(1) ["StartTime"]=> string(5) "09:00" ["EndTime"]=> string(5) "20:00" ["created_at"]=> NULL ["updated_at"]=> NULL } } } のように出力されます。 ですので値は入っています。
guest

回答1

0

自己解決

改めて調べた結果解決しました。

投稿2020/08/18 11:09

yamadaippei

総合スコア12

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問