[CakePHP3]データベースに接続しよう

前回の記事の通り、CakePHP3のインストールに成功していれば、
次のように表示されていると思います。

http://localhost:8888にアクセスしてみましょう。
スクリーンショット 2015-10-09 2.42.20

下にスクロールすると、下記のような表示が現れます。
スクリーンショット 2015-10-09 2.44.55
”CakePHP is NOT able to connect to the database.”、データベースの設定ができていないですよと教えてくれています。

それでは、phpMyAdminを開いて新しくデータベースを作成しましょう。
「同名のデータベースを作成してすべての特権を与える。」にチェックを入れて、新しくユーザーを追加しましょう。
これでデータベースが作成されました。

次に、テキストエディタで、/config/app.phpを開いてください。
206行目付近にあるデータベースの設定項目を下記のように書き換えてください。

'Datasources' => [
    'default' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Mysql',
        'persistent' => false,
        'host' => 'localhost',
        /**
         * CakePHP will use the default DB port based on the driver selected
         * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
         * the following line and set the port accordingly
         */
        //'port' => 'nonstandard_port_number',
        'username' => '先ほど作ったユーザー名', 
        'password' => '先ほど設定したパスワード', // パスワードを設定しなかった場合は''とする
        'database' => '先ほど作ったデータベース', // 上記の通りであればユーザー名と同じはず
        'encoding' => 'utf8',
        'timezone' => 'UTC',
        'cacheMetadata' => true,
        'log' => false,

        /**
         * Set identifier quoting to true if you are using reserved words or
         * special characters in your table or column names. Enabling this
         * setting will result in queries built using the Query Builder having
         * identifiers quoted when creating SQL. It should be noted that this
         * decreases performance because each query needs to be traversed and
         * manipulated before being executed.
         */
        'quoteIdentifiers' => false,

        /**
         * During development, if using MySQL < 5.6, uncommenting the
         * following line could boost the speed at which schema metadata is
         * fetched from the database. It can also be set directly with the
         * mysql configuration directive 'innodb_stats_on_metadata = 0'
         * which is the recommended value in production environments
         */
        //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
    ],

書き換える箇所は、’username’, ‘password’, ‘database’です。
完了したら保存してください。

再度、http://localhost:8888にアクセスしてみてください。
今度は、”CakePHP is able to connect to the database.”にチェックが入ったと思います。
これで、データベースへの接続が完了です。

Pocket

宮田真也

Webプログラマー。
1982年京都府城陽市生まれ。東京都練馬区在住。社会学系の大学・大学院を卒業後、会社員として約6年勤務。退職後、プログラミングを学び、畑違いのWebプログラマーとして独立し、現在に至る。