【Laravel】PostgreSQLとの接続 + DBへダミーデータをセットする


Laravelのインストール

  • composerがインストールされているか確認
ターミナル
composer --version


  • Laravelプロジェクトの作成
composer create-project --prefer-dist laravel/laravel larapg


  • cdコマンドで作成したプロジェクトのフォルダ内へ移動。
cd larapg


  • 設定
config/app.php
// 70行目
'timezone' => 'Asia/Tokyo',

// 109行目
'faker_locale' => 'ja_JP',


PostgreSQLのインストール

  • homebrewがインストールされてるか確認
brew -v


  • pgsqlのインストール
brew install postgres


  • 文字コード設定
initdb /usr/local/var/postgres -E utf8


PostgreSQLへ接続

  • pgsqlを起動
postgres -D /usr/local/var/postgres
  • 上記コマンドを起動したまま、別のターミナルを開く。

  • pgsqlに接続

psql postgres


  • ユーザーを作る
createuser -P admin


  • ユーザー一覧で確認
psql -q -c'select * from pg_user' postgres


PostgreSQLでDB生成

  • DB [friends] を作る
createdb friends


  • DB一覧で確認
\l


  • Postico をインストール
  • 起動して下の画像のように設定して、Connectをクリック。


  • 下の画像のようにDBが作られているか確認します。


マイグレーションを設定

php artisan make:model Models/Friend -m
  • マイグレーション(database/migrations/create_friends_table)を、モデル(app/Models/Friend.php)と一緒に作成します。


create_friends_table.php
Schema::create('friends', function (Blueprint $table) {
    $table->bigIncrements('id'); // ID
    $table->string('name', 30); // 名前。30文字以内。
    $table->Integer('age')->nullable(); // 年齢。NULLでもOK。
    $table->timestamps();
});


PostgreSQLとLaravelを接続

.env(隠しファイル)
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=friends
DB_USERNAME=admin
DB_PASSWORD=
  • Laravelの隠しファイルである .envファイルを上記のように変更。
php artisan migration
  • 上記コマンドで、マイグレーションの実行します。
  • Posticoを更新して、マイグレーションが通ったか確認します。
  • 下の画像のように、DBの中で friendsテーブルが生成されているか確認してください。


  • マイグレーションを修正したい場合は、下記コマンドを実行して、もう一度php artisan migrateを実行する。 php artisan migration:rollback

ダミーデータの設定

  • カラムに、自動でデフォルト値を設定してくれるFactoryを使用します。
php artisan make:factory FriendFactory


database/factories/FriendFactory.php
use App\Models\Friend; // Friend のクラスを呼び出す
~
$factory->define(Friend::class, function (Faker $faker) {
    return [
        'name' => $faker->name, // 名前
        'age' => $faker->numberBetween(18,60) // 年齢、18歳〜60歳
    ];
});
  • 他にも->firstName->city->dateなどがあります。
  • faker一覧
php artisan make:seeder FriendsTableSeeder


database/seeds/FriendsTableSeeder.php
use App\Models\Friend; // Friend のクラスを呼び出す
~
public function run()
{
    factory(Friend::class, 15)->create(); // friendモデルを使って、15個のランダムデータをDBに保存する。
}


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


ダミーデータをDBへインサート

composer dump-autoload


php artisan migrate:fresh --seed


  • Posticoを確認して、下の画像の様になっていたら成功です。