Laravelのデータベース設定

Laravelのルーティングコントローラビューと調べてきましたが、本日は、データベース設定について調べてみたいと思います。Laravelでは、SQLight、MySQL、SQL Server、PostagreSQL等のデータベースをサポートしていますが、私がいつも使っているMySQLでの設定方法を調べてみたいと思います。

1. configフォルダのdatabase.phpファイルの45行目でデフォルトのデータベースを指定します。

laravel/application/config/database.php

‘default’ => ‘mysql’,

2. phpMyAdminでの設定方法を記述します。まず、laravel(任意)の名称でデータベースを作成します。

3. データベーステーブルを一から作成してもいいのですが、面倒ですので、以前作成してあるデータベーステーブルをコピーします。

4. ①その他タブの中の操作をクリックし、②コピー元のデータベースを選択します。選択したデータベースの中からコピーする③データベーステーブルを選択します。テーブルを(データベース).(テーブル)にコピーするの項目で、④コピー先のテーブルを選択して、⑤実行ボタンをクリックします。

5. 再度database.phpを開き、70行目以下を下記のように書き換えます。書き換えるといっても73行目の使用するデータベースを変更するだけですが。

laravel/application/config/database.php

'mysql' => array(
 'driver' => 'mysql',
 'host' => 'localhost',
 'database' => 'laravel',
 'username' => 'root',
 'password' => '',
 'charset' => 'utf8',
 'prefix' => '',
 ),

6. 以上で、データベースの設定は終了です。簡単ですね。それでは、データベースに接続してデータを取得してみましょう。ルーターに下記のコードを記述します。

laravel/application/routes.php

Route::get('hello',function(){
 $data=DB::query('select * from collections');
 echo var_dump($data);
 });

7. 接続されているかどうかブラウザで確認してみましょう。下記のようにデータベーステーブルに接続されているのが確認できればOKです。

http://localhost/laravel/public/hello

8. Laravelのルーターはこのようにちょっとしたプログラムを実行できますので、コードの確認にはとても便利です。

データベースに接続する方法

9. Laravelでデータベースに接続するには、3つの方法があります。生のクエリーを使う方法、Fluentクエリービルダーを使う方法、EloquentORMを使う方法です。詳細は後日調べるとして、簡単に説明します。

生のクエリーを使う

10. まず生のクエリーを使う方法ですが、これは基本的にDBクラスのqueryメソッドを使用します。先程データベースに接続されているかどうか確認したのが、この方法です。Laravelを使う上で生のクエリーを使う機会は少ないと思いますので、説明は省略します。

Fluentクエリービルダー

11. 次にFluentクエリービルダーですが、これはその名(流暢)の通り、流暢なクエリービルダーです。全てのクエリーはプリペアードステートメントを使用し、SQLインジェクションから保護されます。DBクラスのtableメソッドを使用します。

12. それでは、上記の生のクエリーでデータベースに接続したときと同じようにFluentクエリービルダーでデータベースに接続してみましょう。ルータに下記のように記述します。

laravel/application/routes.php

Route::get('hello',function(){
 //Fluentクエリビルダーでデータの取得
 $data=DB::table('collections')->get();
 echo var_dump($data);
 });

13. 上記のブラウザと同じように表示されたらOKです。

EloquentORM

14. 次は、EloquentORMを調べてみましょう。EloquentORMはその名の通り雄弁なオブジェクトリレーショナルマッパーです。データベースのそれぞれのテーブルをEloquentモデルとして定義します。

15. LaravelのEloquentORMには、基本的に下記の2つの規約があります。

  • それぞれのテーブルは、idという名前のプライマリーキーを持つ。
  • それぞれのテーブル名は、対応するモデルの複数形の名前とする。

16. 上記の規約はあくまでも基本ですので、変更することも可能です。例えば、テーブル名はモデルに、staticなtableプロパティを追加することで対応できます。

class User extends Eloquent{
//Userモデルの使用テーブルをmy_usersに設定
 public static $table='my_users';
 }

17. それでは、EloquentORMでデータベースに接続してみましょう。まず、Collectionモデルを作成します。

laravel/application/models/collection.php

<?php
class Collection extends Eloquent{
}

EloquentORMで、モデルはEloquentを継承(拡張)します。上記15の規約通りにデータベーステーブルを作成していれば、中身は全く不要です。FuelPHPでは、データベーステーブルのフィールドをプロパティとして、登録する必要がありましたが、LaravelのEloquentORMは、それすらも登録する必要がありません。これはかなり便利です。私みたいにデータベーステーブルのフィールドを後から追加する人にとってはとても便利です。

18. ルーターに下記のコードを記述します。

laravel/application/routes.php

Route::get('hello',function(){
 //EloquentORMでデータの取得
 $data=Collection::all();
 echo var_dump($data);
 });

19. 下記のように表示されればOKです。EloquentORMはオブジェクリレーショナルトマッパーですので、生のクエリーやFluentクエリービルダーのデータとは渡されるデータが若干違います。

http://localhost/laravel/public/hello

これで、データベース接続の基本的な部分は終了します。FluentクエリービルダーとEloquentORMの詳細は後日検証してご報告します。

次回は、『LaravelでHTMLの生成』について調べてみたいと思います。

本日は以上です。

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

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

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

コメントをどうぞ

このページの先頭へ