0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-08-18

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をクリック。

    スクリーンショット 2020-08-18 18.06.20.png

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

    スクリーンショット 2020-08-18 15.57.57.png

マイグレーションを設定

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テーブルが生成されているか確認してください。

    スクリーンショット 2020-08-18 16.25.16.png

  • マイグレーションを修正したい場合は、下記コマンドを実行して、もう一度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を確認して、下の画像の様になっていたら成功です。

スクリーンショット 2020-08-18 15.47.59.png

0
0
0

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
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?