スポンサーリンク

Undefined property: stdClass エラー解決 [laravel blade]

エラーの内容

エラーの概要

エラーを直訳すると、プロパティが未定義という意味。
今回はDB:selectメソッドで取得した値を表示しようとしたら、DBのテーブルのカラムに存在しない名前を使っていたため、エラーになっていた。

原因の確認

DBのカラム名と、bladeやコントローラーで使ってるカラム名が完全一致かどうか確認すること。
また、大文字、小文字も区別するので、それも確認。

エラーの例

コントローラー

    public function index(){
        $items = DB::select('select * from emp where age = 20');
        return view('index', ['items' => $items]);
    }

テンプレート

    @foreach ($items as $item)
    <table>
        <tr>
            <td>id:{{$item->ID}}</td>
            <td>name:{{$item->name}}</td>
            <td>age:{{$item->age}}</td>
        </tr>
    </table>
    @endforeach

上記のselectを実行して、データを取得しようとしたが、DBのカラム名は小文字のidであるにもかかわらず、テンプレートで大文字指定をしていたため、名前違いとなりエラーとなった。