Laravel4 DB操作とマイグレーションを試す

raharu(仮名)(プログラマー)
これがダイバージェンス1%の先の世界か。。。

とりあえずサーバーにmysqlをインストールしておきます。

設定を行う

app/config/database.phpのmysql配列を変更する

'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'dbname',
'username' => 'username',
'password' => 'password',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),

変更箇所は自分の環境の場合は
databaseとusernameとpassword

databaseは適当に作っておきます。

マイグレーションファイルを作成する

$ php artisan migrate:make create_template_table

今回はテーブルのひな形テーブルを作成します。

app/database/migrations/2015_01_06_184420_create_template_table.php

のパスにファイルが作成されました。

これを修正します。

<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateTemplateTable extends Migration {
>.../**
>... * Run the migrations.
>... *
>... * @return void
>... */
>...public function up()
>...{
Schema::create('template', function($table){
$table->increments('id');
$table->string('key', 128)->unique();
$table->string('value', 256)->nullable();
$table->text('data')->nullable();
$table->timestamps();
$table->timestamp('deleted_at')->nullable();
$table->enum('active', array('0', '1'))->default('1');
});
>...}
>.../**
>... * Reverse the migrations.
>... *
>... * @return void
>... */
>...public function down()
>...{
Schema::drop('template');
>...}
}

Schemaのコマンドは
Laravelドキュメンド:スキーマビルダー
に書かれています、ほとんど悩む事なくつくれました

マイグレーション実行

$ php artisan migrate

DBをみてみると

f:id:raharu0425:20150106212559p:plain

テーブルができました。

マイグレートのコマンドは以下の通り

php artisan list | grep migrate
migrate Run the database migrations
migrate
migrate:install Create the migration repository
migrate:make Create a new migration file
migrate:publish Publish a package's migrations to the application
migrate:refresh Reset and re-run all migrations
migrate:reset Rollback all database migrations
migrate:rollback Rollback the last database migration

直感的な動きをしますので各コマンドを試してみるのが良いと思います。

インサートしてみる

$now_timestamp = date("Y-m-d h:i:s");
DB::insert('insert into template (`key`, `value`, `created_at`, `updated_at`) values(?, ?, ?, ?)', array('template.v1', 'hogehogehogehoge', $now_timestamp, $now_timestamp));

試しにこんなクエリを作ってみました。 実行してみると

f:id:raharu0425:20150106224214p:plain

ちゃんと入っています。

Laravel今日一日ためしてみましたが、何かと機能が充実してる感じで使いやすいです。 ドキュメントもしっかり作られているので戸惑う事も少ない良フレームワークだと思います。

次はEloquent ORMを試します。