マイグレーション
マイグレーションファイル作成
$ php artisan make:migration create_messages_table --create=messages
messages
の部分はお好きなテーブル名にしてください。注意点として、テーブル名は基本的に複数形にします。別の名前をつける場合は明示的に指定する必要があります。
マイグレーションファイルの内容を適宜変更してください。
public function up() { Schema::create('messages', function (Blueprint $table) { $table->increments('id'); $table->string('title', 20); $table->timestamps(); }); }
マイグレーション実行
$ php artisan migrate Migration table created successfully.
モデル作成
$ php artisan make:model モデル名 $ php artisan make:model Models/モデル名 // Modelsディレクトリを作成済の場合
app ディレクトリにMessageモデルが作成されます。とりあえずこれだけでok。モデルとはDBを繋ぐもの、という認識で特に問題ないでしょう。モデル名は複数形にはしません。
モデルについて記事にしました。
シーダーファイル
シーダーファイル作成
$ php artisan make:seeder MessagesTableSeeder
ファイルの中身も適宜変更してください。
public function run() { DB::table('table')->insert([ [ 'id' => '001', 'body' => 'サンプルテキスト', 'updated_at' => Carbon::create(2020, 4, 1, 11, 4, 5), ], [ 'id' => '002', 'body' =>'サンプルテキスト', 'updated_at' => Carbon::create(2020, 4, 1, 12, 4, 5), ], ]); } }
シーダーファイル内で改行を入れたい!
もし長文などを登録する場合、改行を入れたいときもあると思います。そんな時はシングルクォーテーションをダブルクォーテーションに変えて、\n
(エスケープシーケンス)を書いておけば無事改行されます。
public function run() { DB::table('table')->insert([ [ 'id' => '001', 'body' => 'サンプルテキスト', 'updated_at' => Carbon::create(2020, 4, 1, 11, 4, 5), ], [ 'id' => '002', 'body' => "サンプルテキスト\nサンプルテキスト", // ここ! 'updated_at' => Carbon::create(2020, 4, 1, 12, 4, 5), ], ]); } }
シーダー実行
新しいクラス(シーダー)を作ったらcomposer dump-autoload
も忘れずに。
$ composer dump-autoload Package manifest generated successfully. // これが表示されれば成功
これは少〜し時間がかかるかもしれまんせん。1分はかからないと思いますが。
そしてシーダーを実行すればDBに反映されます。
$ php artisan db:seed --class=MessagesTableSeeder
一括で実行
シーダーファイルが複数ある場合は、一括で実行できるようにもできます。
まとめ
これでテストテーブルができるので、laravelでDBを使って開発する場合に便利です。
おまけ(ロールバック)
もしマイグレーションを実行した後にやっぱり戻したい!となったら以下を実行します。
ひとつまえに戻す
$ php artisan migrate:rollback
回数を指定して戻す
step
オプションで巻き戻す個数を指定できます。
$ php artisan migrate:rollback --step=5
すべてのマイグレーションをなかったことに
$ php artisan migrate:reset
テーブルがすべて削除されます。
注意点('21 1月追記)
指定したファイルだけをマイグレーションし直すことはできないようです。
なぜならマイグレーションは連続的なものだからということです。外部キーを設定していたりすると理解しやすいかもしれませんね。
もしそのような場合は残念ながらすべてをマイグレーションし直すしかありません。以下の方法がありますが、おすすめはrefresh
です。
$ php artisan migrate:refresh
- 作成済みのテーブルをロールバック
$ php artisan migrate:reset
- 作成済みのテーブルを削除
$ php artisan migrate:fresh
参考にしたサイト様
入門Laravelチュートリアル (3) ToDoアプリのフォルダ一覧表示機能を作る | Hypertext Candy
【Laravel】Base table or view not found: 1146エラーの解消法【初心者向け】 | webico blog