マイグレーション - php artisan
新規テーブル追加用のマイグレーションファイル作成
php artisan make:migration create_%table_name%_table --create=%table_name%
既存テーブル カラム追加用のマイグレーションファイル作成
※ ファイル名にはカラム追加の意味add_columnsだけ記載すればいいと思う(何のカラムを追加したかとか入れると多く追加しとき対応できない)
※クラス名重複を避けるため yyyymmdd を追加するのがいいと思う
php artisan make:migration add_columns_to_%table_name%_yyyymmdd --table=%table_name%
既存テーブル カラム変更
php artisan make:migration change_columns_of_%table_name%_yyyymmdd --table=%table_name%
ファイル内での記述は、
$table->string('book_name', 255)->nullable()->change();
$table->renameColumn('company', 'publish');
$table->dropColumn('price');
マイグレーション 実行
マイグレーションファイルはどんどん増えていくので、通し番号で階層管理する
実行するときは、下記のようにフォルダ指定する
php artisan migrate --path=database/migrations/1
マイグレーション 1回 戻す
php artisan migrate:rollback --path=database/migrations/1
マイグレーション - 問答無用でお世話になる型たち
$table->string('email', 255);
$table->text('description');
$table->integer('member_id');
$table->smallinteger('birth_year');
$table->tinyinteger('birth_month');
$table->date('birthday');
$table->boolean('is_sendable');
マイグレーション - その他の型たちはこちらへ
マイグレーション - カラム属性
外部キー
//カラムの定義と外部キー制約の定義で2行になる
//参照先のIDの型と合わさないとエラーになる
$table->unsignedInteger('book_id');
$table->foreign('book_id')->references('id')->on('books');
Null許可
$table->string('book_name', 255)->nullable();
ユニーク
$table->string('atuthor')->unique();
デフォルト値
$table->integer('price')->default('1000')
created_at/updated_at/deleted_at
$table->timestamps();
$table->softDeletes();
正負無し
$table->integer('book_no')->unsigned();
または
$table->unsignedInteger('book_no');
コメント
//いつ追加したか、フラグだったら内容入れとくと、
//テーブル定義書をリバースエンジで作るときも、運用も楽じゃないかなと思う
$table->tinyinteger('is_recess')->comment('2019/02/22, 休止フラグ, 0:稼働中 1:休止中')
モデル 作成
php artisan make:model books
ソフトデリート
use Illuminate\Database\Eloquent\SoftDeletes;
class Books extends Model
{
use SoftDeletes;
}