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>
[参考サイト]