Illuminate Databaseは、SQLで操作することができますが、Eloquent ORM(Objecte-Relational Model)というオブジェクト操作になぞらえた操作もできます。
Illuminate Databaseをインストールして、データの挿入、取り出しを行う例を示します。データベースエンジンはMySQLを利用しますが、Illuminate Databaseは、PostgresやSQL Serverなどにも対応しています。
インストール
- 利用するプロジェクトフォルダー内で、composerを使ってインストールする
composer require illuminate/database
データベースの準備
事前に、利用するデータベースを作成しておきます。
mysql -u データベースを作成できるユーザー名 -p
- パスワードを入力してMySQLを起動
- データベースを作成。以下は test_eloquentorm というデータベースを作成する例
CREATE DATABASE IF NOT EXISTS test_eloquentorm CHARACTER SET=utf8;
- 操作するユーザーを特定のユーザーに割り当てる場合、権限を与える。eloquent_userが操作する場合は以下の通り
GRANT SELECT,DELETE,INSERT,UPDATE,CREATE ON test_eloquentorm.* TO 'eloquent_user'@'localhost';
データベースの操作
Eloquent ORMを使って、以下を行うコードを示します。
- データベースに接続
- テーブル'users'がなければ作成
- ユーザーを追加
- 全てのデータを取り出して、名前と作成日時を出力
- ex.php を作成して、以下のコードを書く
<?php // 必要なクラスを自動的に読み込む require __DIR__ . '/vendor/autoload.php'; // 必要なクラスを宣言 use Illuminate\Database\Capsule\Manager as Capsule; use Illuminate\Database\Eloquent\Model as Eloquent; // 操作したいテーブルに対して、Eloquentクラスを継承したクラスを定義 // デフォルトでは、クラス名を小文字にして複数形にしたテーブル名を自動的に参照。以下の例ではusers class User extends Eloquent{}; // Illuminate Databaseを設定 $capsule = new Capsule; // データベースに接続 $capsule->addConnection([ 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'test_eloquentorm', 'username' => '', // ユーザー名 'password' => '', // パスワード 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '' ]); // Illuminate DatabaseのインスタンスをCapsuleでアクセス可能にする $capsule->setAsGlobal(); // Eloquent ORMを起動 $capsule->bootEloquent(); // スキーマのインスタンスを取得 $schema = $capsule->schema(); // テーブル users がないかを確認 if (!$schema->hasTable('users')) { // なければテーブルの作成 // カラムの指定方法は http://readouble.com/laravel/5/0/dev/ja/schema.html $schema->create('users', function($table) { $table->increments('id'); $table->string('name', 100); $table->timestamps(); }); } // 名前 という名前で新規ユーザーを追加 $user = new User; $user->name = "名前"; $user->save(); // データを取り出す $lists = User::all(); foreach($lists as $user) { echo $user->name.":".$user->created_at."\n"; } ?>
以上です。各コードの説明は参照URLを参照してください。
事前に作成したテーブルを利用するには
例えば、事前に'custom_table'という名前でテーブルを作成していた場合は、以下のように、モデルクラスの$tableプロパティにテーブル名を設定します。
class User extends Eloquent { protected $table = 'custom_table'; }
参考URL
- データベースの基本的な使用法 5.0.dev Laravel
- Illumination Databaseについて
- Eloquent ORM 5.0.dev Laravel
- Eloquent ORMの操作方法について
- スキーマビルダー 5.0.dev Laravel
- Eloquent ORMでテーブルの作成など、テーブルやカラムの操作について
- Eloquent: Getting Started - Laravel - The PHP Framework For Web Artisans
- Laravel5.2のEloquent ORMについてのドキュメント