LoginSignup
3

More than 5 years have passed since last update.

posted at

updated at

Laravel5.4: DBとしてSQLiteを用意する

ローカル開発環境で使うDBを用意します。
今回はSQLiteを使います。
なお、Laravel5.5ではMySQLを使うことにしました。
それについては下記を御覧ください。
:link: Laravel5.5: DBとしてMySQLを用意する - Qiita

親記事

Laravel 5.4で基本的なCRUDを作る - Qiita

環境設定ファイルを修正する

SQLite用に.envのDB接続の部分を修正します。
環境設定

.env
DB_CONNECTION=sqlite
# DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=homestead
# DB_USERNAME=homestead
# DB_PASSWORD=secret

SQLiteファイルを作る

面倒を避けて、config/database.phpに記述されているとおりの場所とファイル名で作ります。

PowerShell
> ni database\database.sqlite

マイグレーションの準備をする

マイグレーション

今回使うusers, postsテーブルのうち、usersテーブルは既存のマイグレーション設定を利用します。

posts用のマイグレーション

Artisanコマンドでマイグレーションを生成します。

PowerShell
> php artisan make:migration create_posts_table

生成したdatabase/migrations/2017_05_22_041557_create_posts_table.phpup(), down()の中身を下記のようにします。

2017_05_22_041557_create_posts_table.php
public function up()
{
    Schema::create('posts', function (Blueprint $table) {
        $table->increments('id');
        $table->string('title');
        $table->text('body');
        $table->timestamps();
    });
}

public function down()
{
    Schema::drop('posts');
}

テーブルの中身を用意する

シーディング

Fakerをインストール

仮のデータを自動生成してくれるFakerを利用します。
通常はrequire-devですが、今回は本番のHerokuでも使いたいのでrequireとします。

PowerShell
> composer require fzaninotto/faker

users用シーダー

PowerShell
# シーダーを生成
> php artisan make:seeder UsersTableSeeder

run()メソッドを下記のようにします。

database/seed/UsersTableSeeder.php
public function run()
{
    $faker = Faker\Factory::create('ja_JP');
    for ($i = 0; $i < 20; $i++)
    {
        DB::table('users')->insert([
            'name' => $faker->unique()->userName(),
            'email' => $faker->unique()->email(),
            'password' => bcrypt('1234'),
            'created_at' => $faker->dateTime(),
            'updated_at' => $faker->dateTime(),
        ]);
    }
}

posts用シーダー

PowerShell
> php artisan make:seeder PostsTableSeeder
database/seed/PostsTableSeeder.php
public function run()
{
    $faker = Faker\Factory::create('ja_JP');
    for ($i = 0; $i < 20; $i++)
    {
        DB::table('posts')->insert([
            'title' => $faker->text(20),
            'body' => $faker->text(200),
            'created_at' => $faker->dateTime(),
            'updated_at' => $faker->dateTime(),
        ]);
    }
}

シーダーの呼び出しを設定する

run()メソッドを下記のようにします。

database/seeds/DatabaseSeeder.php
public function run()
{
    $this->call(UsersTableSeeder::class);
    $this->call(PostsTableSeeder::class);
}

マイグレーションとシーディングを実行する

PowerShell
# マイグレーション
> php artisan migrate --seed

これでdatabase.sqliteにテーブルが2つ作成されます。


補足

マイグレーションをやり直したい

ロールバック

rollback, resetコマンドを使えます。
あちこちいじったDBの内容をきれいにしたい場合は下記のように。

PowerShell
# テーブルを削除
> php artisan migrate:refresh --seed

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3