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の生成』について調べてみたいと思います。
本日は以上です。
2012年10月29日 | コメント/トラックバック(0) | トラックバックURL |
カテゴリー:Laravel