CakePHP Cookbook ブックマークチュートリアルの手順まとめ

※Qiitaには初投稿です、よろしくお願いします。

CakePHP の学習のため「CakePHP Cookbook ブックマークチュートリアル」をやってみたので、その時の手順をまとめました。
構築する環境によっては、エラーなどが発生しチュートリアル通りにいかない場合もあるので、同じところでハマった人のお役に立てれれば幸いです。

■CakePHP Cookbook ブックマークチュートリアル
http://book.cakephp.org/3.0/ja/tutorials-and-examples/bookmarks/intro.html

#0.前提環境
-ローカル端末環境で行った（MacBook Pro OS X El Capitan バージョン 10.11.6）
-ウェブサーバとデータベースは MAMP を使用した（MAMP3.5、PHP 7.0）

#1.事前準備
##1-1.PHPのバージョンを確認する
PHP 5.5.9 以上であること。

`php -v`

##1-2.MAMPのhtdocs配下に作業用のフォルダを作成する
フォルダ名は任意。今回は「cookbook」とした。

`mkdir cookbook`

##1-3.作業用のフォルダに移動する

`cd cookbook`

#2.CakePHP の取得
##2-1. composer をインストールする
10秒ほど待つ。

`curl -s https://getcomposer.org/installer | php`

##2-2.cakePHPのプロジェクトを作成する
プロジェクト名は「bookmarker」。1分ほど待つ。

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

#3.インストールの確認
##3-1.MAMPを起動する

##3-2.ブラウザでプロジェクトにアクセスできることを確認する

http://localhost:8888/cookbook/bookmarker/

※ブラウザアクセス時にエラーが表示された場合
・MAMPを一旦停止する
・下記のブログ記事を参考に「php.intl」を追加インストールする

>■CakePHP3 Composerでインストールしたらautoload.phpが読み込めないエラーが出た
>http://chaika.hatenablog.com/entry/2015/11/03/150934
>`brew install homebrew/php/php70-intl`

・MAMPを再起動

<img width="915" alt="スクリーンショット 2016-07-20 11.15.18.png" src="https://qiita-image-store.s3.amazonaws.com/0/80120/474856c9-841b-05d3-5cd1-ae97ace43eca.png">
［プロジェクトのトップ画面］

<img width="874" alt="スクリーンショット 2016-07-20 11.15.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/80120/9147bbfc-4754-4949-54d5-642d7f4fa7b7.png">
［現時点ではデータベースを作成していないので、この項目はバツ印で問題ない］

#4.データベースの作成
##4-1.MAMPのphpMyAdminを起動する

##4-2.新規データベースを作成する
データベース名は「cake_bookmarks」とする。

<img width="662" alt="スクリーンショット 2016-07-20 11.28.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/80120/9aca90ea-f3d5-46c3-34d9-3ef56ac6ffb1.png">
［phpMyAdminのデータベース作成画面］

##4-3.データベースにテーブルを設定する
テーブルは「users」、「bookmarks」、「tags」、「bookmarks_tags」の計４つ。

`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)
);`

<img width="697" alt="スクリーンショット 2016-07-20 11.30.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/80120/dc22e6a6-8aaa-d78f-a077-f179ab7ef7ed.png">
［SQL文実行画面］

<img width="697" alt="スクリーンショット 2016-07-20 11.33.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/80120/834ce453-eaa1-95ae-ac32-a296def2da63.png">
［SQL文結果画面］

##4-4.テーブルが生成されているか確認する

<img width="1060" alt="スクリーンショット 2016-07-20 12.08.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/80120/def6f305-b87a-6fc2-f956-86df142f8a8d.png">
［テーブル一覧］

#5.データベースの設定
##5-1.config/app.php の「Datasources.default」配列の値を以下の通り変更する

'username' => '（データベースのユーザー名）',
'password' => '（データベースのパスワード）',
'database' => （データベース名：cake_bookmarks）',

##5-2.ブラウザでプロジェクトにアクセスし、Databaseの項目のエラーがなくなっていることを確認する
http://localhost:8888/cookbook/bookmarker/

#6.Scaffoldコードの生成
##6-1.ターミナル上でプロジェクトフォルダに移動する

`cd bookmarker`

##6-2.ターミナル上で以下のコマンド（３つ）を入力する

`bin/cake bake all users`

`bin/cake bake all bookmarks`

`bin/cake bake all tags`

※「SQLSTATE[HY000] [2002] No such file or directory」というエラーメッセージが表示されたら、以下のブログ記事を参考に config/app.php の「Datasources.default」配列に以下の行を追加する

`'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',`

>■MAMP環境でのCakePHPのmysql.Sockの指定方法
>http://blog.10rane.com/2013/02/04/mamp-cakephp-mysql/

<img width="898" alt="スクリーンショット 2016-07-20 12.37.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/80120/8c59a50e-df8b-3366-a1b2-15447392a6ca.png">
［挿入箇所］

##6-3.ブラウザでプロジェクトにアクセスして動作を確認する

http://localhost:8888/cookbook/bookmarker/bookmarks

<img width="1067" alt="スクリーンショット 2016-07-20 12.39.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/80120/0bc110ef-c334-3e9d-7733-751530134d3d.png">
［プロジェクト実行画面］

（続く）