Laravel 02日目:データベース接続とSeedを使ったデータ投入やってくよ!
今日やること
- データベース接続
- マイグレーションでテーブル作成
データベース接続設定の修正
config/.env の設定値を環境に合わせて修正していく
DB_CONNECTION=mysql DB_HOST=[IP] DB_PORT=[ポート番号] DB_DATABASE=[データベース名] DB_USERNAME=[ユーザ名] DB_PASSWORD=[パスワード]
マイグレーションを使ってテーブル作成
マイグレーションファイル作成
database/migrations
の下にファイルが作成されている。
$ php artisan make:migration create_users_table Created Migration: 2019_12_02_232635_create_users_table
マイグレーションファイル修正
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateUsersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('users', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('name'); $table->string('email')->unique(); $table->string('password'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('users'); } }
マイグレーション実行
$ php artisan migrate Migration table created successfully. Migrating: 2019_12_02_232635_create_users_table Migrated: 2019_12_02_232635_create_users_table (0.06 seconds)
ロールバックはこうする
$ php artisan migrate:rollback Rolling back: 2019_12_02_232635_create_users_table Rolled back: 2019_12_02_232635_create_users_table (0.04 seconds)
テーブルの確認
mysql> desc users; +------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------------+------+-----+---------+----------------+ | id | bigint(20) unsigned | NO | PRI | NULL | auto_increment | | name | varchar(255) | NO | | NULL | | | email | varchar(255) | NO | UNI | NULL | | | password | varchar(255) | NO | | NULL | | | created_at | timestamp | YES | | NULL | | | updated_at | timestamp | YES | | NULL | | +------------+---------------------+------+-----+---------+----------------+ 6 rows in set (0.00 sec)
Seed
Seedファイル作成
$ php artisan make:seeder UsersTableSeeder Seeder created successfully.
Seedデータ作成
database/seeds/UsersTableSeeder.php
<?php use Illuminate\Database\Seeder; class UsersTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { DB::table('users')->insert([ 'name' => Str::random(10), 'email' => Str::random(10).'@m.cybermergina.top', 'password' => bcrypt('password'), ]); } }
database/seeds/DatabaseSeeder .php
<?php use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { /** * Seed the application's database. * * @return void */ public function run() { // ここを追加してSeed実行時に追加したSeedクラスが呼ばれるようにする $this->call(UsersTableSeeder::class); } }
Seed実行
$ php artisan db:seed Seeding: UsersTableSeeder Seeded: UsersTableSeeder (0.09 seconds) Database seeding completed successfully.
データ確認
mysql> select * from users; +----+------------+-------------------------------+--------------------------------------------------------------+------------+------------+ | id | name | email | password | created_at | updated_at | +----+------------+-------------------------------+--------------------------------------------------------------+------------+------------+ | 1 | 1t0gtLmC5G | bO2FYpxwHi@m.cybermergina.top | xxxx | NULL | NULL | +----+------------+-------------------------------+--------------------------------------------------------------+------------+------------+ 1 row in set (0.00 sec)
所感
今のところ特に何にも躓くこともなく順調にいっている。良き良き。 ただ、細かいところは読めてないので大枠作り終えたらドキュメントの隅まで見たいなという気持ち。