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工夫すると出来ないもの結構出てくるんですね。

それでも回避方法があるというのが素晴らしいところです。

\ 最新情報をチェック /

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください