Laravel4のデータベース設定と基本

今日は、Laravel4のデータベース設定について調べてみます。

基本設定

1. データベースの設定情報は、config/database.php内に記述します。

2. まず、database.phpの29行目に使用するデータベースを指定します。

laravel4/app/config/database.php

'default'=>'mysql',

現在Laravelがサポートしているデータベースは、MySQL、Postgres、SQLight、SQL Serverです。

3. 49行目以下に、それぞれのデータベースごとの設定が記述されています。ロリポップでの設定方法を記述しておきます。各自のサーバー情報を調べて記述してください。

'mysql' => array(
 'driver' => 'mysql',
 'host' => 'mysql9981.phy.lolipop.jp', //データベースホスト
 'database' => 'LAA0567817-laravel4', //データベース名
 'username' => 'LAA0567817', //ユーザー名
 'password' => 'mypassword', //データベース接続用パスワード
 'charset' => 'utf8',
 'collation' => 'utf8_unicode_ci',
 'prefix' => '',
 ),

クエリーの実行

4. データベース接続を設定したら、DBクラスを使用しクエリーを実行することが出来ます。尚、下記の例で表示しているcollectionsテーブルは以前作成したデータベーステーブルを使用しています。Laravel3では、DB::queryメソッドでしたが、それぞれ、selectメソッド、insertメソッド、updateメソッド、deleteメソッドに変更になっています。

  • SELECTメソッド
    Route::get('database',function(){
     $data=DB::select('select * from collections where id=?,array(1));
     echo var_dump($data);
     });

    laravel4_034

  • INSERTメソッド
    Route::get('database/insert',function(){
     $data=DB::insert('insert into collections (id,title) values(?,?)',array(999,'レミゼラブル'));
     $data=DB::select('select * from collections where id=?',array(999));
     echo var_dump($data);
    });

    laravel4_035

  • UPDATEメソッド
    Route::get('database/update',function(){
     $data=DB::update('update collections set title=? where id=?',array('リンカーン',999));
     $data=DB::select('select * from collections where id=?',array(999));
     echo var_dump($data);
    });

    laravel4_036

  • DELETEメソッド
    Route::get('database/delete',function(){
     $data=DB::delete('delete from collections where id=?',array(999));
     $data=DB::select('select * from collections where id=?',array(999));
     echo var_dump($data)
     });

    laravel4_037

  • statementメソッド
    通常のSQL文を実行するには、statementメソッドを使用します。
    DB::statement(‘drop table collections’);
  • connectionメソッド
    複数のコネクションを使用するときは、connectionメソッドを使用します。
    $users=DB::connection(‘foo’)->select(….);

Fuluentクエリービルダー

5. Fuluentクエリービルダーは、アプリケーションをSQLインジェクション攻撃から守るために、PDOパラメーターによるバインディングを使用していますので、バインドする文字列をクリーンにしてから渡す必要がないので、安心です。

6. 基本的な部分はLaravel3と変更がないと思いますので、説明は省略します。

Eloquent ORM

7. EloquentORMは、美しくシンプルなアクティブレコードによるデータ操作の実装です。

8. Eloquent ORMを使用するには、Eloquentモデルを定義する必要があります。基本的にテーブル名が複数形で、モデル名が単数名で、id名で一意のIDが指定されていれば、下記のように記述するだけです。

laravel4/app/models/Collection.php

<?php
 class Collection extends Eloquent{
 }

尚、Laravel3ではファイル名は全小文字のcollection.phpでしたが、キャメル記法に変更になっていますので、Collection.phpであることに注意してください。

9. Eloquent ORMの基本は変わっていないと思いますが、リレーションのメソッド名なども、キャメル記法になっていることに注意してください。

  • has_one→hasOne
  • belongs_to→belongsTo
  • has_many→hasMany
  • has_many_and_belongs_to→belongsToMany

本日は以上です。

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

トラックバック&コメント

この投稿のトラックバックURL:

トラックバック

コメント

  1. シゲ より:

    Eloqunet ORM を説明する箇所でタイトルなどを含め
    n と e が逆になっているものがいくつかあります。

    正:Eloqu”en”t ORM
    誤:Eloqu”ne”t ORM

    以上、気になってしまったので、コメント欄でのご報告でした。

    • nakada より:

      コメントありがとうございます。
      早速修正しておきました。

      これからもよろしくお願いします。

      WinRoad徒然草 管理人
      中田


コメントをどうぞ

このページの先頭へ