現在laravelで複数選択可のチェックボックスをmysqlに保存するように実装をしているのですが、保存をしようとすると以下のエラーが出てしまします。おそらく入力した値が配列のままの状態で保存をかけたから以下のエラーがでると考えています。そこでimplodeメソッドを用いて入力した値を[,] カンマでくっつけて保存を試みようとしたのですがうまく適用されません。(エラーは以下と同じ)
下記の記事を参考にして作成しました。おそらくimplodeがうまく適用されてないのかなと思うのですが、原因がわからないので解決策をご教示頂けると幸いでございます。companyというカラムが現在あるのですがそのカラムにチェックボックスで複数選択した値をいれるようにしたいです。
create.blade.php {!! Form::open(['route' => ['kuma.store'], 'method' => 'post']) !!} <input type="hidden" name="confirming" value="{{ old('confirming', 'false') }}"> <div class="form-group required {{ $errors->has('body') ? 'has-error' : '' }}"> <label class="control-label" for="body">コメント</label> @if(old('confirming', 'false') === 'false') <input type="text" class="form-control" name="body" value="{{ old('body') }}"> @else <p class="form-control-static">{{ old('body') }}</p> <input type="hidden" name="body" value="{{ old('body') }}"> @endif @if($errors->has('body')) <p class="help-block">{{ $errors->first('body') }}</p> @endif @if(old('confirming', 'false') === 'false') <?php foreach($menu as $key => $val): ?> <label><?php echo $val ?></label> <input type="checkbox" value="<?php echo $val ?>" name="company[<?php echo $key ?>][]"> <?php endforeach; ?> @else <?php foreach(old("company") as $val): ?> <?php echo $val[0]; ?> <?php endforeach; ?> @endif </div> </div> </div>
kumaController.php public function create() { $menu = (['1' => 'google', '2' => 'facebook', '3' => 'twitter', '4' => 'yahoo', '5' => 'apple', '6' => 'microsoft', ]); $price = ([1=>10000,2=>20000 ,3=>30000 ,4=> 40000, 5=>50000, 6=>60000, 7=>70000, 8=>80000, 9=>90000, 10=>100000]); return view('kuma.create', compact("menu","price")); } public function store(ContactRequest $request) { if ($request->get('action') === 'back') { return redirect() ->route('kuma.index') ->withInput($request->except(['action', 'confirming'])); } // $input = $request->all(); // $this->kuma->fill($input); // 2) // $this->kuma->save(); // 3) $data = $request->all(); if(!empty($request->get('company'))){ $str_commuting_division = implode(",", $data['company']); $data['company'] = $str_commuting_division; }else{ $data['company'] = ''; } $this->kuma->fill($data); $this->kuma->save(); return redirect()->to("kuma"); }
エラー文
Invalid
1``
回答2件
あなたの回答
tips
プレビュー