🌲

CakePHP 5 : シードファイルを作成して、データを登録してみる

2023/10/23に公開

はじめに

今回はテーブルにデータ登録をするため、シードファイルの作り方を紹介します。
シード(Seed)とは、データベースに挿入する初期データのこと、またはその仕組みのことを指します。

バージョン情報

  • CakePHP: 5.0.1
  • mysql: 8.0
  • phpMyAdmin: 5.0.4

シードファイルの作成と実行

bake でシードファイルを作成

シードファイルを作成して、テーブルに挿入する初期データを定義します。
例えば articles テーブルのシードファイルを作りたい場合は、以下のコマンドで作成できます。

bin/cake bake seed Articles

以下のような内容のファイルが作成されます。(初期データは何も入っていない状態です)

/config/Seeds/ArticlesSeed.php
<?php
declare(strict_types=1);

use Migrations\AbstractSeed;

/**
 * Articles seed.
 */
class ArticlesSeed extends AbstractSeed
{
    /**
     * Run Method.
     *
     * Write your database seeder using this method.
     *
     * More information on writing seeds is available here:
     * https://book.cakephp.org/phinx/0/en/seeding.html
     *
     * @return void
     */
    public function run(): void
    {
        $data = [];

        $table = $this->table('articles');
        $table->insert($data)->save();
    }
}

$data = [];の中に初期データを記述します。

/config/Seeds/ArticlesSeed.php
$data = [
    [
        'id' => 1,
        'title' => '今日の天気',
        'body' => '今日はとてもいい秋晴れだった',
        'created' => '2023-10-01 00:00:00',
        'modified' => '2023-10-01 00:00:00',
    ],
];

データベースの値をシードに出力

既存のデータをシードファイルに起こす方法もあるので紹介します。
テーブルにデータが登録されている状態で以下のコマンドを実行します。
--dataオプションをつけることで、データを含んだ状態のシードファイルを作成できます。

bin/cake bake seed テーブル名 --data

実行(データベースに値登録)

以下のコマンドで、全てのシードを実行できます。

bin/cake migrations seed

個別のシードを実行するには、bin/cake migrations seed --seed ファイル名コマンドを使用します。
以下は ArticlesSeed.php を実行する際のコマンド例です。

bin/cake migrations seed --seed ArticlesSeed

参考資料

https://book.cakephp.org/migrations/3/ja/index.html#seed

おわりに

今回、私は特に問題なく進めることができました。でもマイグレーションやシードのコマンドの種類はもっとたくさんあるので、覚えることがいっぱいです…!

次回は MVC について書いてみたいと思います。

Discussion