haiju's 開発メモ

開発に必要な情報を自分用にメモ

Laravel6.xでUndefined property: stdClass::$column_nameとかUse of undefined constant column_name

Laravel6は最近、使い始めたばかりなのでルールがよくわかってなかった。

laravel-oci8を使ってOracleのテーブルからselectで取得したリストをviewの

プルダウンリストに表示させたいだけなのに、タイトル通りのエラーが出て

さっぱり動かないよ。どういうこと?(´;ω;`)ウゥゥ

と思っていたら、取得したカラム名に大文字を使ってたのが定数と解釈されて

エラーが出ていたらしい。

[解決策]

Oracleのテーブルから取り出したカラム名を大文字ではなく小文字に修正して

bladeテンプレートに設定。

(ex)app/Http/Controllers/TestController.php

public function search()

{

      $lists = DB::connection('oracle')->("select TEST_ID,NAME from tablename");

      return view('test.search', compact('lists'));

}

(ex)resources/views/test/search.blade.php

<select name="test-select" class="xxxxx">

    <option value="-1">選択してください</option>

    @foreach($lists as $data)

    <option value="{{ $data->TEST_ID }}">{{ $data->TEST_ID }}:{{ $data->NAME }}</option>

 ※↑の大文字になっているカラム名を以下のように小文字に修正したら解決。

    <option value="{{ $data->test_id }}">{{ $data->test_id }}:{{ $data->name }}</option>

    @endforeach

</select>

[参考サイト]

php1st.com