🌲
CakePHP 5 : シードファイルを作成して、データを登録してみる
はじめに
今回はテーブルにデータ登録をするため、シードファイルの作り方を紹介します。
シード(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
参考資料
おわりに
今回、私は特に問題なく進めることができました。でもマイグレーションやシードのコマンドの種類はもっとたくさんあるので、覚えることがいっぱいです…!
次回は MVC について書いてみたいと思います。
Discussion