LaravelのDBについて(マイグレーション、tinkerなど) - Hashimoto-Noriaki/laravel-php-memo GitHub Wiki

2022年04月15日投稿

マイグレーション(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

日本語の公式サイト

公式サイトは目を通した方がいいです。

https://readouble.com/

マイグレーションのサイトです。

https://readouble.com/laravel/6.x/ja/migrations.html

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の資料

https://qiita.com/ucan-lab/items/0e9537be6d5709e1d099

参考資料

https://qiita.com/takeshisakuma/items/9962dd94bd9301ea9e14

https://qiita.com/shosho/items/a5a5839735dfef9214b1

https://qiita.com/juve_534/items/96dc6e7e0652dced1428

https://qiita.com/mikakane/items/6ed937b4904be0f0a5cf