マイグレーション(Migration)とは
データベースのテーブルを作成、編集、削除などデータベースの履歴を管理するものです。
マイグレーション作成
マイグレーション作成コマンドを紹介していきます。
$ php artisan make:migration [migration_name]
モデル作成
$ php artisan make:model Models/モデル名 -m
でマイグレーションファイルも同時作成。 -cだとControllerです。
公式ページにも載っています。
https://laravel.com/docs/5.2/migrations#generating-migrations
マイグレーションとモデルの注意
モデル名は単数形
でマイグレーション名は複数形
になるので注意してください。
作成したテーブルを触る
マイグレーションを作成したら、こんな下のようになります。
作成したマイグレーションに文字長を指定した場合は
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateTestsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('tests', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('text', 100); //追記 これを指定 textを追記
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('tests');
}
}
これでmigrationを実行しデータベースに反映させます。
$ php artisan migrate
テーブル作成
$ php artisan make:migration create_users_table --create=users
$ php artisan make:migration create_テーブル名_table --create=テーブル名名
すでにusersというテーブルがあって、そこに新しいvotesというカラムを追加する場合
$ php artisan make:migration add_votes_to_users_table --table=users
$ php artisan make:migration add_追加したいカラム_to_users_table --table=テーブル名
マイグレーション状況確認
$ php artisan migrate:status
マイグレーションを元に戻すロールバック
$ php artisan migrate:rollback
数字の数の分だけロールバックします。
$ php artisan migrate:rollback --step=数字
全部ロールバックしてからマイグレーションし直す
$ php artisan migrate:refresh
一旦全てのテーブルを削除してマイグレーションし直す
$ php artisan migrate:fresh
クエリを表示するだけでマイグレーションはしない
$ php artisan migrate --pretend
$ php artisan migrate:rollback --pretend
日本語の公式サイト
公式サイトは目を通した方がいいです。
マイグレーションのサイトです。
tinker
tinkerを使うと、データベースを簡単に触れるようになります。
$ php artisan tinker
//Psy Shell v0.11.2 (PHP 8.0.8 — cli) by Justin Hileman
//>>>
モデル作成
$user = new App\Models\User;
=> App\Models\User {#3347}
作成
>>> $test->$text = "ポチ";
=> "ポチ"
保存
$test->save();
=> true
App\Models\Test::all(); //これで中身が見れる
=> Illuminate\Database\Eloquent\Collection {#4070
all: [
App\Models\Test {#4069
id: 1,
text: "ポチ",
created_at: "2022-04-15 13:43:32",
updated_at: "2022-04-15 13:43:32",
},
],
}
php adminなどで確認するとデータベースができています。
もう一つ作成してみます。
新規作成
>>> $test_test = new App\Models\Test;
=> App\Models\Test {#3346}
>>> $test_test->text = "ポン太"; //textカラムに入力
=> "ポン太"
>>> $test_test->save(); //保存
=> true
確認
>>> App\Models\Test::all();
=> Illuminate\Database\Eloquent\Collection {#4278
all: [
App\Models\Test {#4279
id: 1,
text: "ポチ",
created_at: "2022-04-15 13:43:32",
updated_at: "2022-04-15 13:43:32",
},
App\Models\Test {#4280
id: 2,
text: "ポン太",
created_at: "2022-04-15 13:51:00",
updated_at: "2022-04-15 13:51:00",
},
],
}
有益そうなtinkerの資料
参考資料