Laravel:テーブルをforeachして取得した値をView【 Form:select() 】で使いたい

Laravel:テーブルをforeachして取得した値をView【 Form:select() 】で使いたい

foreachして取得した値をView【 {{Form:select()}} 】で使いたい

必要になる時に忘れていていちいち調べるので備忘録。

Tableを条件抽出してその中の一部をFormのselectに回したいときがあります。
選択肢のvalueに抽出した値を使いたいときどうするか、そんな時の各コードの挙動についてです。

作成したいのは以下の配列です。

これをViewで次のように書きます。

そうすると次のように出力されます。

この形はどうすれば作れるか。いつも忘れるんですよね。

その1:$jancode[] = array($val->jan => $val->jan)

これをvar_dump($jancodes)すると結果は…。

なんだ?最後なんかついてるしw 実は何も考えずにいつもコレを書いてしまい、違ったと修正するんですよね。この書き方だと結果は必ず失敗します。

その2:$jancodes = array_merge($jancodes, array($val->jan => $val->jan))

これもやりがちですが、求めたい配列にはたどり着きません。

var_dump($jancodes)結果。

おしいですが、余計なnumberが付いてます。
この最初のコードがFormのvalueになてしまうのでこの方法も上手くいきません。

その3:array_push($janacodes,array($val->jan => $val->jan))

この書き方も調べるとよく引き当てますが、こいつも不正解です。

結果はこちら。

その1と同じ結果です。

その4:$jancodes[$val->jan] = $val->jan

もう全部自分で書いて仕舞えという方法です。当然この記載方法なら欲しい配列が手に入ります。

結果

欲しい配列が手に入りました。

その5:$jancodes += array($val->jan =>$val->jan)

この【+=】でつなぐ書き方でも求めたい値を手に入れる事が出来ます。

結果

その6:$jancodes = $jancodes + array($val->jan =>$val->jan)

まぁ、その5の書き方を変えただけなので結果は同じですね。これでも欲しい配列を手に入れる事が出来ます。

結果

まとめ

まぁ楽なのは【その5】の書き方かなぁ。

つぎは忘れていたという事が無いようにしたいものです。