laravel テーブルの設定変更をする DBエラー SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'hogehoge' compoerでdbalについて
エラー内容: notnullでnull制約がされている 空は許可しないという設定になっている
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Field | Type | Null | Key | Default | Extra |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
title | varchar(255) | NO | NULL | ||
category_name | varchar(255) | NO | NULL | ||
problem0 | varchar(255) | NO | NULL | ||
problem1 | varchar(255) | NO | NULL |
やりたいこと:空の値でも入れるという設定にしたかった。
対策: カラムの制限を変更する
1度作ったテーブルのカラムについて変更や各種制限を変更するのもマイグレーションを使う
カラムの変更はcomposer.jsonでdoctrine/dbalを追加する必要がある
Doctrine DBALライブラリというのは、現在のカラムの状態を決め指定されたカラムに対する修正を行う
ために使用している
composer requireで
compoerを通してinternet上からダウンロードすることができる
jsでいうnpm
composer.jsonでライブラリが管理されている
これでdbalでカラムを修正するSQLを自動的に作るための準備ができた
まず、カラムを変更するためのマイグレーションファイルを作成
(テーブル設計をしたらそれを実行しないと始まらないので、その実行に当たるのがマイグレーション)
php artisan make:migration change_hogehoge_not_null_to_null_on_drills_table --table=drills
このような命名であれば、ファイル名から、何をしたいのか明示することができる
hogehogeカラムをchangeするnotNullからNullに変えるdrills_tableに対して
という意味
そのmigrationに対して、
$table->string('problem1')->nullable()->change(); で、 カラムの型指定してSQLを書き換えるための指定をすること
nullableについて
nullでも良いことにする
Laravelの標準バリデーションのわかりにくい挙動を実験して確かめたまとめ - Qiita