LaravelでDBのテーブルを操作するマイグレーションとシーディングについてメモ

laravel-logo Laravel

Laravelに搭載されている、DBのテーブルを操作するマイグレーションとシーディングについてメモ。

概要

マイグレーション

  • マイグレーションとは、データベースのバージョン管理機能である
  • CREATE TABLEする際に使用する
    • 以下が指定できる
      • テーブル名
      • カラム名
      • データ型
    • phpの関数で実行する。

シーディング

  • シーディングとは、テーブルに対してデータを登録する際に利用する

 

 

マイグレーションのやり方

作業の流れ

以下の3ステップで行う。

  1. マイグレーション用のファイルを作成する
  2. 上記のファイル内にマイグレーションのスクリプトを記述する
  3. 上記のファイルをで実行すると、Tableが作成される

 

具体的手順

 

1. マイグレーション用のファイルを作成する

マイグレーション用のファイルを用意する。

以下のコマンドで雛形ファイルが生成できる。

 

php artisan make:migration ファイル名

例)

$ php artisan make:migration create_store_table
Created Migration: 2023_02_02_071927_create_store_table

 

 

ファイル名は、任意っぽいが、

「create_テーブル名_table」

とするとわかりやすいので良いみたい。

 

例)hoge テーブル作成用のファイルを作成する

php artisan make:migration create_hoge_table

 

2. 上記のファイル内にマイグレーションのスクリプトを記述する

マイグレーション用のファイルを作成したら、

中身を編集してスクリプトを作る。

make:migration コマンドを実行すると以下の内容のファイルができる。

 

 

2つの関数が用意されている。

  • function up()
  • function down()
function up()

テーブル作成時に使う関数。

 

デフォルトで以下の記述があると思う。

$table->id();
$table->timestamp();

上記に書きたしてく。

‘name’ という名前のテーブルを文字列型のデータ型で作成したい場合は、

$table->string('name');

と書く。見てわかるが、「string」の部分がデータ型。

よく使いそうな データ型は、Qiitaにまとめてくださっている人がいるのでそちら参考。

  • increments(‘id’) … 「符号なしINT」を使用した自動増分ID(主キー)
  • binary(‘カラム名’) … バイナリデータカラム
  • boolean(‘カラム名’) … 真偽値カラム
  • char(‘カラム名’, 長さ) … 長さを指定する文字列カラム
  • date(‘カラム名’) … 日付カラム
  • time(‘カラム名’) … 時間カラム
  • dateTime(カラム名) … 日時カラム
  • double(‘カラム名’, 桁数, 小数点以下桁数) … ○ 桁で小数点以下× 桁の小数カラム
  • enum(‘カラム名’, [‘定数’, ‘定数’]) … ENUMカラム
  • integer(‘カラム名’) … 数値データカラム
  • json(‘カラム名’) … JSONフィールドカラム
  • timestamp(‘カラム名’) … TIMESTAMPカラム
  • timestamps() … created_atとupdate_atカラム
  • nullableTimestamps() … NULL値を許す以外、timestamps()と同じ
  • string(‘カラム名’) … VARCHARカラム
  • string(‘カラム名’, 長さ) … 長さ指定のVARCHARカラム
  • text(‘カラム名’) … TEXTカラム

すべてのデータ型を見るには、
Laravel日本語マニュアル%3B%0A%7D)%3B-,%E5%88%A9%E7%94%A8%E5%8F%AF%E8%83%BD%E3%81%AA%E3%82%AB%E3%83%A9%E3%83%A0%E3%82%BF%E3%82%A4%E3%83%97,-%E3%82%B9%E3%82%AD%E3%83%BC%E3%83%9E%E3%83%93%E3%83%AB%E3%83%80%E3%81%AEBlueprint)を参照する。

ちなみにenum型はあんま使わんほうがいいかも。Qiita

function down()

テーブル削除時に使う関数。

3. 上記のファイルをartisan migrateコマンドで実行すると、Tableが ~~更新(~~ 作成 ~~、削除)~~ される

以下のコマンドでマイグレーションが実行される。

php aritsan migrate
「Could not open input file: artisan」って怒られる場合

php aritsan migrate
コマンドを実行した際、
「Could not open input file: artisan」って怒られたときは、
実行場所が間違っている可能性が高い。

Laravelディレクトリのトップディレクトリに移動してから実行すること。

参考

「 SQLSTATE[HY000] [1045] Access denied for user ‘root’@’localhost’ (using password: NO) (SQL: select * from information_schema.tables where table_schema = laravel and table_name = migrations and table_type = ‘BASE TABLE’)」って怒られる場合

SQLSTATE[HY000] [1045] Access denied for user ‘root’@’localhost’ (using password: NO) (SQL: select * from information_schema.tables where table_schema = laravel and table_name = migrations and table_type = ‘BASE TABLE’)

のようなメッセージが出たときは、MySQLへアクセスする情報が間違っている。
以下いずれかを確認する。

  • .env
  • config/database.php

拙僧は.envがデフォのままだった。てへぺろ。

参考

 

 

 

  1. artisanコマンドとは、Laravelに用意された、Laravelのなんやかんやを行う際に使用するコマンド

 

down()メソッドを使ってもとに戻したい場合

down()メソッドを実行するには以下のコマンド。

php artisan migrate:rollback

参考:Qiita

参考文献

 

 

コメント

タイトルとURLをコピーしました