WinRoadのLaravel4初心者講座

次世代PHPフレームワークのLaravel4を初心者向けに解説して参ります。

Winroad徒然草の管理人がお届けします
Schemaビルダーでテーブルの作成

Schemaビルダーでテーブルの作成

このエントリーをはてなブックマークに追加

Schemaビルダーで実際にテーブルを作成してみましょう。作成するテーブルは、今後の講座の中で実践例として使用していきます。

collectionsテーブルの作成

まず、作成するテーブルは、私のコレクションの整理用のテーブルを作成したいと思います。

  • テーブル名は、collectionsです。
  • 作成する項目は、とりあえず、title、category、contentの3項目にします。
  • 上記とEloquent ORMを使用するための id,created_at,updated_at も作成します。

それでは、ルーターに下記のように記述します。

Route::get('create/collections/table',function(){
 //collectionsテーブルの存在確認
 if(!Schema::hasTable('collections')){
 // collectionsテーブルの作成
 Schema::create('collections',function($table){
 $table->increments('id');
 $table->string('title');
 $table->string('category');
 $table->text('content');
 //created_atとupdated_atの同時作成
 $table->timestamps();
 });
 return 'collectionsテーブルを作成しました。';
 }else{
 return 'collectionsテーブルが存在しますので、処理を中止します。';
 }
 });

ブラウザで、http://localhost/laravel4/public/create/collections/tableにアクセスします。

「collectionsテーブルを作成しました。』と表示されたら、テーブルが作成されているはずですので、phpMyAdminを起動して実際に確認してみましょう。無事collectionsテーブルが作成されています。

laravel4_071

整理用のcodeを作成し忘れました。タイトルの前にcodeを作成してみましょう。ルーターに下記のように記述します。

Route::get('collections/table/add/code',function(){
 //codeカラムの存在確認
 if(!Schema::hasColumn('collections','code')){
 // collectionsテーブルの更新
 Schema::table('collections',function($table){
 $table->string('code')->after('id');
 });
 return 'codeを追加しました。';
 }else{
 return 'codeカラムが存在するので、処理を中止します。';
 }
 });

ブラウザで、http://localhost/laravel4/public/collections/table/add/codeにアクセスしてみます。

laravel4_072

エラーが表示されました。hasColumnメソッドが使えないみたいですね(※私のベータ版のバーションが古いのだと思われます)。仕方ないので、例外処理*で記述したいと思います。下記のように修正します。

Route::get('collections/table/add/code',function(){
 try{
 // collectionsテーブルの更新
 Schema::table('collections',function($table){
 //idの後にcodeカラムを追加
 $table->string('code')->after('id');
 });
 return 'codeを追加しました。';
 }
 catch(Exception $e){
 return '処理を中止します。';
 }
 });

カラムが追加されたら、「codeを追加しました。」と表示します。尚、カラムが追加されなかった場合は、「処理を中止します。」を表示します。

laravel4_073

これで、無事、カラムも追加されました。

尚、Laravel4のバージョンを最新版にアップデートしたら、Schema::hasColumnメソッドはきちんと動きました。

« »

コメント

  • ほげほげ より:

    いつもわかりやすい説明ありがとうございます。

    Schemaビルダーすごいですね!あっという間にテーブルが作成できちゃうので、テーブル名やカラム名(項目名)の変数だけ修正して、必要なテーブルやそのカラム(項目)をデータベースの中にどんどん作れますね!

    今後の講座も楽しみにしております(^。^)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です