PHPのslim3でデータベースに接続する
今回はデータベースに接続する設定を追加します。
DBに接続するライブラリは以下を使います。
composer.jsonに以下の設定を追加してcomposer updateします。
composer.json @@ -15,6 +15,7 @@ "php": ">=5.5.0", "slim/slim": "^3.1", "slim/twig-view": "2.2.0", + "illuminate/database": "v5.4.13",
MySQLに接続する環境はできてるとしてMySQLに以下のコマンドでテーブルを追加します
CREATE DATABASE sample default character set utf8; GRANT ALL ON sample.* TO sample@'%' IDENTIFIED BY 'password'; CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ユーザID', `name` varchar(256) NOT NULL COMMENT 'ユーザ名', `created_at` datetime NOT NULL COMMENT '登録日', `updated_at` datetime NOT NULL COMMENT '更新日', PRIMARY KEY (`id`) ); INSERT INTO user VALUES (1,'test_user',now(),now());
settings.phpにMySQL用の接続設定を追加します
src/settings.php 'settings' => [ 'displayErrorDetails' => true, // set to false in production 'addContentLengthHeader' => false, // Allow the web server to send the content-length header + 'determineRouteBeforeAppMiddleware' => false, + 'displayErrorDetails' => true, + + 'db' => [ + 'driver' => 'mysql', + 'host' => 'mysql-server', + 'database' => 'sample', + 'username' => 'sample', + 'password' => 'password', + 'charset' => 'utf8', + 'collation' => 'utf8_unicode_ci', + 'prefix' => '', + ],
dependencies.phpにdb用のコンテナ設定を追加します
src/dependencies.php @@ -3,6 +3,16 @@ $container = $app->getContainer(); +$container['db'] = function ($c) { + $capsule = new \Illuminate\Database\Capsule\Manager; + $capsule->addConnection($c['settings']['db']); + $capsule->setAsGlobal(); + $capsule->bootEloquent(); + return $capsule; +};
最後にコントローラに以下のようにDBにアクセスするコードを記述します。
src/Sample/Controller/TopController.php @@ -15,6 +15,7 @@ class TopController public function index($request, $response, $args) { + $user = $this->container['db']->table('user')->find(1); + return $this->container['renderer']->render($response, 'top/index.twig', ['message' => 'Hello '.$user->name]); } }
これでアクセスするとDBの内容が表示されるようになります