🍓

CMSチュートリアルに乗っ取って作成を進めよう

2023/11/08に公開

忙しすぎて2ヶ月ほどほったらかしになってしまったが今度こそちゃんと進めていこう

まずはチュートリアルに倣ったテーブル設計にするためにマイグレファイルを作成する

bin/cake bake migration CreateUsers "email:string[255]" "password:string[255]" created modified
bin/cake bake migration CreateArticles "user_id:integer[11]" "title:string[255]" "slug:string[191]" body:text published:boolean created modified
bin/cake bake migration CreateTags "title:string[191]" created modified
bin/cake bake migration CreateArticlesTags "article_id:integer[11]" "tag_id:integer[11]"

バージョン番号がバッティングしてエラー吐くから名前を変える

# src/config/Migrations

mv 202311080555_TableName.php 202311080600_TableName.php
#数字が被ってなければ大丈夫

Dockerコンテナの中でマイグレする
ローカル環境と違いコンテナの中じゃないとマイグレできない

 docker-compose exec web bash
 bin/cake migrations migrate

テーブルが正しく作成されているか確認する

#DockerだからDBがあるコンテナに入ってからポスグレコマンド
docker exec -it cakecms-db-1 psql -U ikaten_cakecms -d ikaten_cakecmsdb
\dt
                List of relations
 Schema |     Name      | Type  |     Owner
--------+---------------+-------+----------------
 public | articles      | table | ikaten_cakecms
 public | articles_tags | table | ikaten_cakecms
 public | phinxlog      | table | ikaten_cakecms
 public | tags          | table | ikaten_cakecms
 public | users         | table | ikaten_cakecms
(5 rows)
#phixclogはマイグレしたら勝手にできる

テーブルが作成できたことを確認できたら次はシーディングを行いテーブルに中身を入れる
これもチュートリアルを参考にテストデータを入れる

# シーディングファイル作成
# src/config/Seedsに作成される
bin/cake bake seed Users
bin/cake bake seed Articles
UsersSeed.php
<?php
declare(strict_types=1);

use Migrations\AbstractSeed;

/**
 * Users seed.
 */
class UsersSeed 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 = [
            [
                'email' => 'cakephp@example.com',
                'password' => 'secret', // 実際にはハッシュ化する
                'created' => date('Y-m-d H:i:s'),
                'modified' => date('Y-m-d H:i:s'),
            ]
        ];

        $table = $this->table('users');
        $table->insert($data)->save();
    }
}
// ArticlesSees.phpも同じように入力する

シーディングを行いテーブルにデータを入れる
こちらもコンテナに入ってからシーディングしないといけない

bin/cake migrations seed --seed UsersSeed
bin/cake migrations seed --seed ArticlesSeed

次は最初のモデルを作っていく

Discussion