覚え書きブログ

PHPの覚え書き(CakePHPを用いた開発編)

前回は、testというダミーのプロジェクトを作りながらCakePHPをインストールした。hirotaka-hachiya.hatenablog.com

今回は、次のブックマークチュートリアルに沿って、CakePHPを用いたPHPシステムの開発をしてみる。
http://book.cakephp.org/3.0/ja/quickstart.html#id2

まず、プロジェクト「bookmarker」を作成する。

> php composer.phar create-project --prefer-dist cakephp/app bookmarker

次にphpmyadminを用いて「cake_bookmarks」データベースを作成する。
f:id:hirotaka_hachiya:20150923173847p:plain

次に、cake_bookmarksデータベースにて、phpmyadminを用いて下記のテーブルを作成する。
具体的には、cake_bookmarksを選択し、「SQL」タブを選択し、下記のSQL文をコピペし、「実行」する。

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

CREATE TABLE bookmarks (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    title VARCHAR(50),
    description TEXT,
    url TEXT,
    created DATETIME,
    modified DATETIME,
    FOREIGN KEY user_key (user_id) REFERENCES users(id)
);

CREATE TABLE tags (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255),
    created DATETIME,
    modified DATETIME,
    UNIQUE KEY (title)
);

CREATE TABLE bookmarks_tags (
    bookmark_id INT NOT NULL,
    tag_id INT NOT NULL,
    PRIMARY KEY (bookmark_id, tag_id),
    FOREIGN KEY tag_key(tag_id) REFERENCES tags(id),
    FOREIGN KEY bookmark_key(bookmark_id) REFERENCES bookmarks(id)
);

f:id:hirotaka_hachiya:20150923174308p:plain

下記のように、bookmarks、bookmarks_tags、tagsおよびusersの4つのテーブルが作成されていることを確認する。
f:id:hirotaka_hachiya:20150923174539p:plain

さらに、phpmyadminにて、「ユーザ」タブから「ユーザを追加する」をクリックし、
ユーザ「cakephp」を追加する。

次に、作成したデータベースを、cakePHPから参照できるように、「bookmarker/config/app.php
の「Datasources」の「username」、「password」および「database」を編集する。

    'Datasources' => [
        'default' => [
            'username' => 'cakephp',
            'password' => 'phpmyadminで設定したパスワード',
            'database' => 'cake_bookmarks',

そして、「./bookmarker/bin/cake server」を実行し、ブラウザで「http://localhost:8765/」にアクセスし、次のようにデータベースが利用可能になっていることを確認する。
f:id:hirotaka_hachiya:20150923204949p:plain

次に、以下のコマンドを実行し、アプリの簡単な骨格を作る。

>./bookmarker/bin/cake bake all users
>./bookmarker/bin/cake bake all bookmarks
>./bookmarker/bin/cake bake all tags