Laravel:文字列カラムを結合した値でViewのSelectを作る
目次
Laravel:文字列カラムを結合した値でViewのSelectを作る
私の作っているシステムはネットショップ向けのシステムです。
やる事が沢山あるネットショップシステムでは『面倒臭いものを楽にする』が結構重要だったりします。
その面倒なモノの1つに【タグづけ】があります。
1つのタグで複数のモールが連動出来たら楽じゃないですか!
タグの情報は階層構造になっています。
例えばこんな感じです。
- インテリアの素材|アクリル
- インテリアの素材|い草
- キッチン用品の素材|アクリル
- 生地の素材|アクリル
アクリルだけで関連付けは出来ないんですよね。
だったら一番細かいものに合わせてモールのタグをソコと紐づければ良いじゃん!
と言うことでやってみたらハマりました。
Laravelさんconcatもダメなのね…。
書いたものを探しやすいように備忘録記載です。
Concatを使う場合、SQLを直接実行する
前回記事のGroupByと同じですね。
「直接記載してブロック回避してしまえ」と言う事らしいです。
パーツ事記載していきます。
Controller
1 2 3 4 5 6 7 8 |
$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
1 |
{{Form::select('matelial_id',$materials,null,['id' => 'name'])}} |
出来たもの
まとめ
なるほど、Laavelは便利にしようとSQL工夫すると出来ないもの結構出てくるんですね。
それでも回避方法があるというのが素晴らしいところです。
-
前の記事
Laravel:GroupByでSQLSTATE[42000]:Syntax error or access violation: 1055発生 2019.03.01
-
次の記事
Laravel:CLASS ~~ does not exist エラーの原因と解決 2019.03.05
コメントを残す