Laravel:文字列カラムを結合した値でViewのSelectを作る
Laravel:文字列カラムを結合した値でViewのSelectを作る
私の作っているシステムはネットショップ向けのシステムです。
やる事が沢山あるネットショップシステムでは『面倒臭いものを楽にする』が結構重要だったりします。
その面倒なモノの1つに【タグづけ】があります。
1つのタグで複数のモールが連動出来たら楽じゃないですか!
タグの情報は階層構造になっています。
例えばこんな感じです。
- インテリアの素材|アクリル
- インテリアの素材|い草
- キッチン用品の素材|アクリル
- 生地の素材|アクリル
アクリルだけで関連付けは出来ないんですよね。
だったら一番細かいものに合わせてモールのタグをソコと紐づければ良いじゃん!
と言うことでやってみたらハマりました。
Laravelさんconcatもダメなのね...。
書いたものを探しやすいように備忘録記載です。
Concatを使う場合、SQLを直接実行する
前回記事のGroupByと同じですね。
「直接記載してブロック回避してしまえ」と言う事らしいです。
パーツ事記載していきます。
Controller
$materials = Material::where('onoff',1)
->select
(
DB::Raw('CONCAT(IFNULL(tag_segment_1,""),"|",IFNULL(tag_segment_2,"")) as mate'),
'id'
)
->pluck('mate','id');
$materials = $materials ->prepend('選んでください','');
View
{{Form::select('matelial_id',$materials,null,['id' => 'name'])}}
出来たもの

まとめ
なるほど、Laavelは便利にしようとSQL工夫すると出来ないもの結構出てくるんですね。
それでも回避方法があるというのが素晴らしいところです。

