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

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

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

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

PHP

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

Q&A

1回答

618閲覧

DBの情報を表示したい

plusninesty

総合スコア5

Laravel

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

PHP

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

0グッド

1クリップ

投稿2021/01/27 04:26

編集2021/01/27 06:35

表題の通りDBの情報をビューで表示したいのですが、上手くいかずエラーが発生するため、解決に向けご教示をお願いします。

エラー表示

Undefined variable: employees (View: /var/www/html/laravel-app/resources/views/index.blade.php)

web.php

Route::get('/', function () { return view('/index'); }); Auth::routes(); Route::get('/index', 'HomeController@index')->name('index'); Route::group(['middleware' => 'auth'], function () { Route::resource('goods', 'GoodsController', ['only' => ['create', 'store', 'destroy']]); Route::resource('employee', 'EmployeesController', ['only' => ['index']]); });

Employee.php

<?php namespace App; use Illuminate\Database\Eloquent\Model; class Employee extends Model { protected $fillable = ['emlpoyee_id','employee_name']; public function goods() { return $this->hasMany(Goods::class); } }

EmployeesController.php

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Goods; use App\Employee; //class GoodsController extends Controller class EmployeesController extends Controller { public function index() { $employees = Employee::orderBy('id','desc')->get(); return view('index', [ 'employees' => $employees, ]); } }

index.blade.php

extends('layouts.app') @section('content') <table class="table table-hover"> <thead class="thead-dark"> <tr> <th scope="col">社員番号</th> <th scope="col">氏名</th> <th scope="col" colspan="4">貸与品</th> </tr> </thead> <tbody> <tr> <td>111</td> <td>山田</td> <td>制服</td> <td>上着</td> <td>靴</td> <td>その他</td> </tr> </tbody> <tbody> @foreach($employees as $employee) <tr> <td scope="row">{{ $employee->employee_id }}</td> <td scope="row">{{ $employee->employee_name }}</td> </tr> @endforeach </tbody> </table> @endsection

#各ルート
イメージ説明

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

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

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

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

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

m.ts10806

2021/01/27 04:37

foreaceとは何でしょうか。 結局は「出ているエラーの通り」ですね。 LaravelではなくPHPです。
plusninesty

2021/01/27 04:40

失礼しました。foreachの間違いであり、修正しました。
退会済みユーザー

退会済みユーザー

2021/01/27 04:55 編集

index.blade.phpは1つだけですか?また、どのurlでアクセスするときにエラーになりますか?
phper.k

2021/01/27 05:03

提示したコードに間違いはありませんか? index.php -> index.blade.php じゃないか? web.php に EmployeesController@index を定義していないのに、index() でいいの?web.php と Controller どっちを正しい情報と判断すればいい?
plusninesty

2021/01/27 05:09

SoshiAdachi 様 index.blade.phpはひとつだけです。 「index」 urlにアクセスで上記エラーとなっております。
phper.k

2021/01/27 05:20

「web.php に EmployeesController の index() の呼び出しを定義していない」のに、実行されているのが、index() っておかしくない?
plusninesty

2021/01/27 05:36 編集

phper.k 様 ■index.php -> index.blade.php じゃないか? →bladeが抜けており、修正いたしました。 ■web.php に EmployeesController@index を定義していないのに、index() でいいの?web.php と Controller どっちを正しい情報と判断すればいい? →web.phpにてindexを定義しておりませんでした。 Route::resource('employee','EmployeesController',['only'=>['index']]); に修正したのですが、定義としては合っていますでしょうか? また、修正してもエラー内容が変わりない状態です。 お手数おかけしますがご教示いただければと思います。
phper.k

2021/01/27 05:40

> 定義としては合っていますでしょうか? あっているかどうかというより、手元の状況を正しく伝えて欲しいのです。 そうでないと問題を再現できないですし、前提となる条件が違っていては回答しても無駄なやり取りが発生し、お互い疲弊するだけです。
plusninesty

2021/01/27 06:04

phper.k 様 大変失礼いたしました。web.phpのみ修正いたしました。 エラー画面としては、 ■index.blade.phpの 「 @foreach($employees as $employee) 」がエラー示している状態です。
phper.k

2021/01/27 06:10

'`EmployeesController' <- ここに余計な「`」 があるけど、手元の状況と同じ?
plusninesty

2021/01/27 06:25

手元でも「`」がありましたので、削除しましたが変わりない状態です。
guest

回答1

0

web.phpで以下のように定義しているので、/employeeにアクセスした場合だけEmployeesController経由で
index.blade.phpを表示します。

Route::resource('employee','EmployeesController',['only'=>['show']]);

※追記:ここ、indexアクションの指定が足りていませんね。

EmployeesControllerを経由しないurlではemployeesに値が入らないので該当のエラーが出ます。
/indexでもエラーを回避したいのであれば@isset等でemployeesの有無を判定してください。

バージョン違うかも知れませんが公式ドキュメントのリソースコントローラを参照してください。
https://readouble.com/laravel/5.7/ja/controllers.html

投稿2021/01/27 05:34

編集2021/01/27 05:43
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

plusninesty

2021/01/27 06:01

SoshiAdachi 様 resource にてindexの指定がありませんでしたので修正いたしました。 再度アクセスしましたが同様のエラーが発生している状態です。 エラー箇所として、 ■index.blade.phpの 「 @foreach($employees as $employee) 」にてエラーとしており、 定義がなれさていないとのことですが、修正点が見い出せずにいます。 大変恐縮ですが引き続きご教示いただければと思います。
plusninesty

2021/01/27 06:23

/employee にてアクセスしたところ 404Not Foundとなります。
退会済みユーザー

退会済みユーザー

2021/01/27 06:30

php artisan route:listの結果を追記してください。
plusninesty

2021/01/27 06:36 編集

画像追記いたしました。 再度ご確認の程宜しくお願いします。
退会済みユーザー

退会済みユーザー

2021/01/27 06:52

コマンド結果画像を見たところルーティングはあっているので、404が出る原因はソースにはないかも知れません。 私は出くわしたことがない現象なので他の方の解決方法になりますが以下のようなブログが参考になるかも知れません。 http://peacock.ky-3.net/laravel/laravel_404notfound https://qiita.com/isaatsu0131/items/f1eafe7522f0bf0ff043 「laravel ルーティング 404」等でググってみてください。
plusninesty

2021/01/27 07:50

原因は他にもあるようなのですね。引き続き模索してみます。 色々お時間いただきありがとうございました^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問