WEBアプリ養成読本の実践(2)のつづき
Webアプリエンジニア養成読本[しくみ、開発、環境構築・運用…全体像を最新知識で最初から! ] (Software Design plus)
- 作者: 和田裕介,石田絢一(uzulla),すがわらまさのり,斎藤祐一郎
- 出版社/メーカー: 技術評論社
- 発売日: 2014/03/11
- メディア: 大型本
- この商品を含むブログ (5件) を見る
2-3のつづき
illuminate/Eloquentによるデータベース操作
データベース接続の設定
接続用クラスの作成
$ pwd /vagrant/work/app/lib $ mkdir Base $ vim Base/DB.php
<?php namespace Base; class DB { // illuminateのデータベース接続設定とブートアップ static function registerIlluminate(array $setting) { $capsule = new \Illuminate\Database\Capsule\Manager; $capsule->addConnection($setting); $capsule->setEventDispatcher( new \Illuminate\Events\Dispatcher( new \Illuminate\Container\Container() ) ); $capsule->setAsGlobal(); $capsule->bootEloquent(); } }
接続設定作成
$ pwd /vagrant/work/app $ vim config.php
<?php define('TEMPLATES_DIR_PATH', __DIR__ . '/templates'); $db_settings = [ 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'tinitter', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', ];
DB接続のセットアップ
$ vim htdoc/index.php
<?php // ライブラリ読み込み require '../vendor/autoload.php'; // 設定ファイルの読み込み require '../config.php'; // Slimの初期化 $app = new \Slim\Slim([ 'templates.path' => TEMPLATES_DIR_PATH, 'view' => new \Slim\Views\Twig() ]); // Slimにルートを登録 \Tinitter\Route::registration($app); // データベース接続のセットアップ \Base\DB::registerIlluminate($db_settings); // 実行 $app->run();
テーブル作成(databaseはtinitterで作成済み)
$ mkdir data $ vim data/schema.sql
DROP TABLE IF EXISTS posts; CREATE TABLE posts ( id integer primary key not null auto_increment, nickname text not null, body text not null, created_at datetime not null, updated_at datetime not null );
$ mysql -uroot -p --database=tinitter <data/schema.sql
モデルクラス作成
$ mkdir lib/Tinitter/Model $ vim lib/Tinitter/Model/Post.php
<?php namespace Tinitter\Model; class Post extends \Illuminate\Database\Eloquent\Model { }
データ登録処理実装
$ vim lib/Tinitter/Controller/TimeLine.php
<?php namespace Tinitter\Controller; class TimeLine { public function show() { $app = \Slim\Slim::getInstance(); // データ作成 $post = new \Tinitter\Model\Post; $post->nickname = 'ニックネーム'; $post->body = '本文'; $post->save(); $same_post = \Tinitter\Model\Post::find($post->id); $app->render( 'index.twig', [ 'display_text' => "Hello, world!!", 'id' => $same_post->id, 'nickname' => $same_post->nickname, 'created_at' => $same_post->created_at, ] ); } }
テンプレートに登録内容を表示
$ vim templates/index.twig
{% extends "frame.twig" %} {% block content %} {% autoescape true %} hello Twig!<br /> {{display_text}}<br /> id:{{id}}<br /> nickname:{{nickname}}<br /> created_at:{{created_at}}<br /> {% endautoescape %} {% endblock %}
ブラウザで表示
http://localhost/ hello Twig! Hello, world!! id:12 nickname:?????? created_at:2014-12-11 02:06:45
以上。