CakePHPer のための Laravel 入門 - ブログチュートリアル1
CakePHPer のための Laravel 入門 - インストール - localdisk の続き。
さて、前回はインストール、環境の設定(localに設定しました)、拡張のインストールを行いました。今回はメインである CakePHP のブログチュートリアルを Laravel で実装してみましょう。
データベースの設定
まずは、cake-to-laravel/app/config/local/database.php
を設定しましょう。前回触れましたが、Laravel は環境ごとの設定を容易に作成することができます。今回は local 環境のデータベースを SQLite を使用する設定を行います。たった一行追加するだけです。
<?php return array( 'default' => 'sqlite', // <- ここを追加! 'connections' => array( 'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), 'pgsql' => array( 'driver' => 'pgsql', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'charset' => 'utf8', 'prefix' => '', 'schema' => 'public', ), ), );
これで local 環境は、SQLite を使用することになります。
マイグレーション
Laravel では、データベースのスキーマコントロールにマイグレーションを使用します。CakePHP でも同様のことができますがプラグインが必要です。まずはマイグレーションを使用できるようにするために以下のコマンドをターミナルから実行してください。
$ php artisan migrate:install
コマンドを実行したあと、以下のように表示されれば成功です。
Migration table created successfully.
テーブルの作成
マイグレーションの設定ができたら posts
テーブルを作成しましょう。ターミナルで以下のコマンドを実行してください。
$ php artisan generate:migration create_posts_table
コマンド実行すると以下のように表示されます。
Created: /Users/localdisk/NetBeansProjects/cake-to-laravel/app/database/migrations/2014_08_03_061640_create_posts_table.php Generating optimized class loader
はい、作成できましたね。ではこのファイルを覗いてみましょう。
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; class CreatePostsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('posts', function(Blueprint $table) { $table->increments('id'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('posts'); } }
ちゃんと出来ていますね。では、 up
メソッドを修正しましょう。2行追加するだけです。
<?php class CreatePostsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('posts', function(Blueprint $table) { $table->increments('id'); $table->string('title', 50); // 追加 $table->text('body'); // 追加 $table->timestamps(); }); } }
修正したら、以下のコマンドを実行して posts
テーブルを作成します。
$ php artisan migrate
コマンド実行すると以下のように表示されます。
Migrated: 2014_08_03_061640_create_posts_table
はい、これでテーブルができました。次はモデルを作成しましょう。
Post テーブルの作成
posts
テーブルと対になる Post
モデルを作成します。ターミナルで以下のコマンドを実行してください。
$ php artisan generate:model Post
コマンド実行すると以下のように表示されます。
Migrated: 2014_08_03_061640_create_posts_table
これで Post
モデルが作成されました。
<?php class Post extends \Eloquent { protected $fillable = []; }
シード
作成した posts
テーブルに表示用の初期値を設定します。
$ php artisan generate:seed posts
コマンド実行すると以下のように表示されます。
Created: /Users/localdisk/NetBeansProjects/cake-to-laravel/app/database/seeds/PostsTableSeeder.php
これで PostsTableSeeder.php
が作成されました。では、内容を確認してみましょう。
<?php // Composer: "fzaninotto/faker": "v1.4.0" use Faker\Factory as Faker; class PostsTableSeeder extends Seeder { public function run() { $faker = Faker::create(); foreach (range(1, 10) as $index) { Post::create([ ]); } } }
生成されたファイルには Faker の記述がありますが、今回は使用しません。結構便利なライブラリなので、興味があるならぜひ使用してみてください。
では、ブログチュートリアルにそってデータを作成していきましょう。
<?php class PostsTableSeeder extends Seeder { public function run() { Post::create([ 'title' => 'タイトル', 'body' => 'これは、記事の本文です。' ]); Post::create([ 'title' => 'またタイトル', 'body' => 'そこに本文が続きます。' ]); Post::create([ 'title' => 'タイトルの逆襲', 'body' => 'こりゃ本当にわくわくする!うそ。' ]); } }
そして DatabaseSeeder.php
を以下のように修正します。
<?php class DatabaseSeeder extends Seeder { /** * データベースシード(初期値設定)を実行 * * @return void */ public function run() { Eloquent::unguard(); // PostTableSeeder を実行する $this->call('PostsTableSeeder'); } }
では、db:seed
コマンドを実行して初期値をテーブルに設定しましょう。
$ php artisan db:seed
コマンド実行すると以下のように表示されます。
Seeded: PostsTableSeeder
これでデータベースに初期値が設定されました。
続く!