質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

6489閲覧

複数選択したcheckboxのvalueをDBのカラムに全て保存させたい(laravel)

HirakuMorishima

総合スコア29

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/06/03 00:31

laravelを使用しています。
複数選択したcheckboxのデータ(value)全てをテーブルカラムに全て保存したいと考えていますが、

現状のコードでは

Data truncated for column ‘health’ at row 1 (SQL: insert into icons (icon_day, health, user_id, updated_at, created_at) values (2019-06-02, 1,2,3,4, 1, 2019-06-03 00:08:05, 2019-06-03 00:08:05))

といったようなエラーが出てしまいます。

解決策を教えていただきたいです。

●index.blade.php

php

1@extends('layouts.app') 2@section('title', '体調管理') 3@section('content') 4<h3>体調管理アプリ</h3> 5 {!!$cal_tag!!} 6 <a href="#modal01" class="modalOpen"> 7 <button class="btn btn-primary">予定の登録</button> 8 </a> 9 <!--予定登録モーダル--> 10 <div class="modal" id="modal01"> 11 <div class="overLay modalClose"></div> 12 <div class="inner"> 13 <h3>予定登録</h3> 14 <form method="POST" action="memo" autocomplete="off"> 15 <div class="form-group"> 16 {{csrf_field()}}<label for="memo_day">日付</label> 17 <input type="text" name="memo_day" class="form-control datepicker-form" id="memo_day"> 18 <label for="memo">説明</label> 19 <input type="text" name="memo" class="form-control" id="memo"> 20 </div> 21 <button type="submit" class="btn btn-primary">登録</button> 22 </form> 23 <a href="" class="modalClose">Close</a> 24 </div> 25 </div> 26 <a href="#modal02" class="modalOpen"> 27 <button class="btn btn-primary">体調の登録</button> 28 </a> 29 <!--体調管理モーダル--> 30 <div class="modal" id="modal02"> 31 <div class="overLay modalClose"></div> 32 <div class="inner"> 33 <h3>体調登録</h3> 34 <form method="POST" action="icon_save" autocomplete="off"> 35 <div class="form-group"> 36 {{csrf_field()}}<label for="icon_day">日付</label> 37 <input type="text" name="icon_day" class="form-control datepicker-form" id="icon_day"> 38 <label for="health">説明</label> 39 <input type="checkbox" name="health[]" class="form-control" id="health" value="1">健康 40 <input type="checkbox" name="health[]" class="form-control" id="health" value="2">食欲不振 41 <input type="checkbox" name="health[]" class="form-control" id="health" value="3">めまい 42 <input type="checkbox" name="health[]" class="form-control" id="health" value="4">低血圧 43 <input type="checkbox" name="health[]" class="form-control" id="health" value="5">風邪 44 </div> 45 <button type="submit" class="btn btn-primary">登録</button> 46 </form> 47 <a href="" class="modalClose">Close</a> 48 </div> 49 </div> 50 @if($errors->any()) 51<p>入力にミスがあります。</p> 52 <div class="error"> 53 <ul> 54 @foreach($errors->all() as $message) 55 <li class="error">{{ $message }}</li> 56 @endforeach 57 </ul> 58 </div> 59@endif 60 @endsection

●CalendarController.php

php

1<?php 2 namespace App\Http\Controllers; 3 use Illuminate\Http\Request; 4use App\Calendar; 5use App\Memo; 6use App\Icon; 7use Illuminate\Support\Facades\Storage; 8use Illuminate\Support\Facades\Auth; 9use Illuminate\Support\Facades\Log; 10use App\Http\Requests\MemoRequest; 11 class CalendarController extends Controller 12{ 13 // Auth機能 14 public function __construct() 15 { 16 $this->middleware('auth'); 17 } 18 // indexでカレンダーデータ機能取得 19 public function index(Request $request) 20 { 21 $memoList = Memo::all(); 22 $iconList = Icon::all(); 23 $cal = new Calendar($memoList,$iconList); 24 $tag = $cal->showCalendarTag($request->month,$request->year); 25 return view('index', ['cal_tag' => $tag]); 26 } 27 // memosのid取得 28 public function getMemoId($id) 29 { 30 $data = new Memo(); 31 if (isset($id)) { 32 $data = Memo::where('id', '=', $id)->first(); 33 } 34 $list = Memo::all(); 35 return view('memo', compact('list', 'data', 'cal_tag')); 36 } 37 // memoの登録・更新 38 public function postMemo(MemoRequest $request) 39 { 40 // POSTで受信したメモデータの登録 41 if(isset($request->id)) { 42 $memo_val = Memo::where('id', '=', $request->id)->first(); 43 $memo_val->memo_day = $request->memo_day; 44 $memo_val->memo = $request->memo; 45 $memo_val->user_id = Auth::user()->id; 46 $memo_val->save(); 47 } else { 48 $memo_val = new Memo(); 49 $memo_val->memo_day = $request->memo_day; 50 $memo_val->memo = $request->memo; 51 $memo_val->user_id = Auth::user()->id; 52 $memo_val->save(); 53 } 54 $data = new Memo(); 55 $list = Memo::all(); 56 $memoList = Memo::all(); 57 $iconList = Icon::all(); 58 $cal = new Calendar($memoList,$iconList); 59 $tag = $cal->showCalendarTag($request->month,$request->year); 60 return redirect('/')->with(['list' =>$list, 'data' => $data, 'cal_tag' => $tag]); 61 } 62 public function deleteMemo(Request $request) 63 { 64 // DELETEで受信した休日データの削除 65 if (isset($request->id)) { 66 $memo = Memo::where('id', '=', $request->id)->first(); 67 $memo->delete(); 68 } 69 // メモデータ取得 70 $data = new Memo(); 71 $list = Memo::all(); 72 $memoList = Memo::all(); 73 $iconList = Icon::all(); 74 $cal = new Calendar($memoList,$iconList); 75 $tag = $cal->showCalendarTag($request->month,$request->year); 76 // return view('index', ['list' =>$list, 'data' => $data, 'cal_tag' => $tag]); 77 return redirect('/')->with(['list' =>$list, 'data' => $data, 'cal_tag' => $tag]); 78 } 79 // iconの登録・更新 80 public function postIcon(Request $request) 81 { 82 // POSTで受信したiconデータの登録 83 if(isset($request->id)) { 84 $icon_val = Icon::where('id', '=', $request->id)->first(); 85 $icon_val->icon_day = $request->icon_day; 86 $icon_val->health = $request->health; 87 $icon_val->user_id = Auth::user()->id; 88 $icon_val->save(); 89 } else { 90 $icon_val = new Icon(); 91 $icon_val->icon_day = $request->icon_day; 92 $icon_val->health = implode(",", $request->health); 93 $icon_val->user_id = Auth::user()->id; 94 $icon_val->save(); 95 } 96 $data = new Icon(); 97 $list = Icon::all(); 98 $memoList = Memo::all(); 99 $iconList = Icon::all(); 100 $cal = new Calendar($memoList,$iconList); 101 $tag = $cal->showCalendarTag($request->month,$request->year); 102 return redirect('/')->with(['list' =>$list, 'data' => $data, 'cal_tag' => $tag]); 103 } 104}

●2019_05_27_235441_create_icons_table.php

php

1<?php 2 use Illuminate\Support\Facades\Schema; 3use Illuminate\Database\Schema\Blueprint; 4use Illuminate\Database\Migrations\Migration; 5 class CreateIconsTable extends Migration 6{ 7 /** 8 * Run the migrations. 9 * 10 * @return void 11 */ 12 public function up() 13 { 14 Schema::create('icons', function (Blueprint $table) { 15 $table->increments('id'); 16 $table->datetime('icon_day'); 17 $table->integer('health'); 18 $table->integer('user_id')->unsigned(); 19 $table->timestamps(); 20 $table 21 ->foreign('user_id') 22 ->references('id') 23 ->on('users') 24 ->onDelete('cascade'); 25 }); 26 } 27 /** 28 * Reverse the migrations. 29 * 30 * @return void 31 */ 32 public function down() 33 { 34 Schema::dropIfExists('icons'); 35 } 36}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

integerは数値しか入らないので、型を変えずに登録したいなら複数レコード登録する
型を変えてもいいならenumでもsetでもjsonでもコンマ区切りのstringでも好きなようにして登録する

implode(",", $request->health);としているので、stringに変えれば今作ってる処理は通る(他のところで問題がないのなら)

投稿2019/06/03 00:36

hentaiman

総合スコア6389

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hentaiman

2019/06/03 00:37

laravel見てうっかりstringと言ったけど、mysql上で言うvarcharのことです。言わないでも分かると思うけど
HirakuMorishima

2019/06/03 01:14

ありがとうございます。migrationのテーブル型にstring指定で思惑通りの挙動になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問