「CakePHP3」MySQLでテーブルの作成とBake【入門】

カテゴリー:PHP

前回MAMPのMySQLにデータベースの作成とCakePHP3をデータベースに接続までが完了したので、作成したデータベースにテーブルを作成して、Bakeコマンドでコード生成を一気にしていきます。

今回のページでは、データベースにテーブルを作成、Bakeコマンド関連から下記の2項目をまとめています。

  • 「MAMPのMySQLをターミナルから使用してテーブルを作成」
  • 「CakePHPのBakeコマンド」

MAMPのMySQLをターミナルから使用してテーブルを作成

前回同様に、アプリからターミナルとMAMPを起動して、cdコマンドを入力してディレクトリをMAMPの/Library/binに移動します。

cd /Applications/MAMP/Library/bin

移動が完了したら下記コマンドを入力します。

./mysql -u root -p

パスワードを入力して、MySQLをターミナルから使用できるようにします。

次に使用するデータベースを前回作成した「cake_cms」に下記コマンドで設定します。

USE cake_cms;

下記が表示されればデータベースの切り替えが完了です。

Database changed

続いて、CakePHP3のコンテンツ管理チュートリアルでは全部で下記の4個のテーブルを作成する必要があるため作成していきます。

  • users
  • articles
  • tags
  • articles_tags

*CakePHPでは、テーブル名は「複数形でアンダースコアー記法」という命名規則があります。articles_tagsのような「多 対 多」とのテーブルは、アルファベット順に並べてテーブルを作成します。

また、テーブル内のカラムの名前は二個以上の単語で命名する時はアンダースコアー記法で命名します。

ターミナルに下記のコマンドを入力してそれぞれのテーブルを作成します。

users

    CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    email VARCHAR(255) NOT NULL,
    password VARCHAR(255) NOT NULL,
    created DATETIME,
    modified DATETIME
);

articles

    CREATE TABLE articles (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    title VARCHAR(255) NOT NULL,
    slug VARCHAR(191) NOT NULL,
    body TEXT,
    published BOOLEAN DEFAULT FALSE,
    created DATETIME,
    modified DATETIME,
    UNIQUE KEY (slug),
    FOREIGN KEY user_key (user_id) REFERENCES users(id)
) CHARSET=utf8mb4;

tags

    CREATE TABLE tags (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(191),
    created DATETIME,
    modified DATETIME,
    UNIQUE KEY (title)
) CHARSET=utf8mb4;

articles_tags

    CREATE TABLE articles_tags (
    article_id INT NOT NULL,
    tag_id INT NOT NULL,
    PRIMARY KEY (article_id, tag_id),
    FOREIGN KEY tag_key(tag_id) REFERENCES tags(id),
    FOREIGN KEY article_key(article_id) REFERENCES articles(id)
);

ぞれぞれ上記のコマンドを入力後に下記が表示されていれば問題なくテーブルが作成されているはずです。

Query OK, 0 rows affected (秒数)

全てのテーブルを作成後に下記のコマンドを入力します。

SHOW TABLES;

下記の画像のようにcake_cmsデータベース内に作成したテーブルの表示がされたら無事全てのテーブルの作成が完了です。

MAMPのMySQLをターミナルから使用してテーブルを作成

下記コマンドを入力してMySQLを終了させます。

exit;

ここまででテーブルの作成が完了です。

CakePHP3でBake

CakePHPで一番便利な機能のBakeです。コマンド一つで必要な関連したファイルを全て作成してくれる便利機能。CRUDを一度に作成して貰えるので本当に便利ですよね。

早速上記で作成したテーブルの内容をBakeしていきます。

下記cdコマンドでMAMPのhtdocs内のCakePHPの上位フォルダまでディレクトリを移動します。

cd /Applications/MAMP/htdocs/cms

その後、下記コマンドを入力します。

bin/cake bake

下記の内容が表示されれば後はBakeするだけです。

    Available bake commands:

- all
- behavior
- cell
- command
- component
- controller
- fixture
- form
- helper
- mailer
- middleware
- migration
- migration_diff
- migration_snapshot
- model
- plugin
- seed
- shell
- shell_helper
- task
- template
- test
- twig_template

By using `cake bake [name]` you can invoke a specific bake task.

上記は、bakeコマンドで使用できるオプションです。今回は全て作成をしたいのでallを使用していきます。ターミナルに下記コマンドを入力します。

bin/cake bake all users

入力後下記のように表示されればusersテーブルに関してbake完了です。

  Bake All
  ---------------------------------------------------------------
  One moment while associations are detected.

  // 省略…

  Bake All complete.

usersと同じように上記コマンドの末尾のusersをarticles・tagsに変更してBakeをします。

全てのbakeが完了後「http://localhost/cms/users」にアクセスをすると一応動かせる状態の下記の画像と同じWebアプリケーションが完成しているはずです。

CakePHP3 Bakeで作成

参考:CakePHP3クイックスタートガイド


タグ

関連する投稿

ドラクエ好きな社会保険労務士有資格者・ファイナンシャルプランナー技能士検定2級正会員が運営をしています。当ブログではDQMSLを中心にWordPress・HTML・CSS・JS・PHPなどのTips備忘記録や資格関連の情報、その他雑記を発信して行きます。