チェックボックスで選択された値をカラーコードとしてDBに保存しています。
このチェックボックスは複数選択できるようにしているのですが、複数選択すると
|color|
|1,2|
となってしまい、表示する際に「varchar の値 '1,2' をデータ型 int に変換できませんでした。」
とエラーが出てしまいます。
表示する際は、カラーコードテーブルとjoinして表示していて、
チェックボックスで一つだけを選択すると正しく表示されています。
どうしたら複数のデータを表示させることができるのでしょうか?
よろしくお願いします。
表示する際に
|user_id|name|color |
|01 |a |ブラック,ホワイト|
と表示させたいです。
index.blade
php
1 <label><input type="checkbox" name="color[]" class="ib" value="1">ブラック</label> 2 <label><input type="checkbox" name="color[]" class="ib" value="2">ホワイト</label> 3 <label><input type="checkbox" name="color[]" class="ib" value="3">グレー</label> 4
Controller
php
1$colors = Request::Input('color'); 2 3//配列を文字列に変換してテーブルに登録しています。 4$color = implode(",",$colors);
表示する際のSQL
sql
1select user_id,name,colorname 2from( 3 select *, value as cl 4 from sample as s outer apply string_split(s.color,',') 5 ) as a 6 inner join master_color as c 7 on c.color_cd = a.cl 8
これで
|user_id|name |cl |
|1 |aaa |ブラック|
|1 |aaa |ホワイト|
このような結果になったのですが、clを,区切りにして1レコードに格納したいです。
よろしくお願いします。
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/29 05:18 編集
2018/02/06 00:52