とあるプログラマの備忘録

都内某所に住むプログラマが自分用に備忘録を残すという趣旨のブログです。はてなダイアリーから移動しました!

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

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

設定を行う

app/config/database.phpmysql配列を変更する

               '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のコマンドは
DB:スキーマビルダー
に書かれています、ほとんど悩む事なくつくれました

マイグレーション実行

$ 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を試します。