Windows XAMPP で Laravel Eloquent ORM
Windows用XAMPP+Laravel Eloquentを使ってみる
- ※XAMPPのインストールフォルダは
D:/dev/xamppにインストールします。 - ※XAMPPのインストールしていない場合は、[styled_link link=”https://techpjin.sakura.ne.jp/techpjin_new/archives/38933″ textColor=”#000000″]WINDOWS XAMPP にて LARAVEL をインストール (XAMPP V1.8.3インストール)[/styled_link]
- ※Composerのインストールしていない場合は、[styled_link link=”https://techpjin.sakura.ne.jp/techpjin_new/archives/38972″ textColor=”#000000″]WINDOWS XAMPP にて LARAVEL をインストール (COMPOSER 1.0.0-ALPHA8インストール)[/styled_link]
- ※Laravelのインストールしていない場合は、[styled_link link=”https://techpjin.sakura.ne.jp/techpjin_new/archives/39295″ textColor=”#000000″]WINDOWS XAMPP にて LARAVEL をインストール (LARAVEL V4.2インストール)[/styled_link]
- ※Laravelの環境設定していない場合は、[styled_link link=”https://techpjin.sakura.ne.jp/techpjin_new/archives/39416″ textColor=”#000000″]Windows XAMPP で Laravel 環境設定[/styled_link]
- ※LaravelのDB設定していない場合は、[styled_link link=”https://techpjin.sakura.ne.jp/techpjin_new/archives/40368″ textColor=”#000000″]Windows用XAMPP+Laravel DB設定[/styled_link]
Eloquentとは
Eloquent(エロクエント)
Eloquent ORMはLaravelに含まれており、美しくシンプルなアクティブレコードによるデーター操作の実装です。それぞれのデータベーステーブルは関連する「モデル」と結びついています。
※読みは、Laravel Meetup Tokyo vol.3 に行ってきた!ではエロクアントにするそうです。
ORM(Object-relational mapping)
オブジェクト関係マッピング(英: Object-relational mapping、O/RM、ORM)とは、データベースとオブジェクト指向プログラミング言語の間の非互換なデータを変換するプログラミング技法である。オブジェクト関連マッピングとも呼ぶ。実際には、オブジェクト指向言語から使える「仮想」オブジェクトデータベースを構築する手法である。オブジェクト関係マッピングを行うソフトウェアパッケージは商用のものもフリーなものもあるが、場合によっては独自に開発することもある。
usersテーブルを作成したので、Userモデルを作りましょう
ということで、前回usersテーブルを作成したので、Userモデルを作成しましょう。
Eloquentでは、モデル名(今回はUser)の複数名にしたものをテーブル名とする(今回はusers)ようです。
これが標準で、もし変更する場合は、$tableという変数にテーブル名を入れます。
例えば、dragon_userというテーブルにUserモデルを紐づけたい場合は、以下のコードを書きます。
class User extends Eloquent {
protected $table = 'dragon_user';
}
もう一つ主キーの制約があり、主キーの名前はidであり、外部キーはモデル名_idとなります。
今回作成しているusersの主キーはidですが、名前を変えたい場合は、以下の設定をする必要があります。
class User extends Eloquent {
protected $table = 'users'; // defaultなので設定不要です。
protected $primaryKey = 'user';
}
外部キーに関しては、例えば部署を示すDEPモデルがある場合、外部キー名はdep_idとなります。
Userモデル
もうすでにD:/dev/xampp/dragon/app/models/User.phpが存在します。開いてみることにしましょう。
app/models/User.php
<?php
use IlluminateAuthUserTrait;
use IlluminateAuthUserInterface;
use IlluminateAuthRemindersRemindableTrait;
use IlluminateAuthRemindersRemindableInterface;
class User extends Eloquent implements UserInterface, RemindableInterface {
use UserTrait, RemindableTrait;
/**
* モデルで使用されるデータベース
*
* @var string
*/
protected $table = 'users';
/**
* モデルのJSON形式に含めない項目
*
* @var array
*/
protected $hidden = array('password', 'remember_token');
}
$tableにusersが指定してあります。
データを登録すると分かるのですが、Eloquentでは登録できる項目を指定しない場合は、その項目に登録出来ません。
ですので、登録する項目を指定していきます。
今回usersで利用する項目は、name, email, tel, zip, addressなので、配列で定義します。
app/models/User.php
<?php
class User extends Eloquent {
protected $fillable = array('name', 'email', 'tel', 'zip', 'address');
}
実際は上記だけで良いです。
Userコントローラ
モデルで遊ぶなら、コントローラを作成したほうがよいかと思います。
まずは、ルートを変更します。
app/route.php
Route::controller('/user', 'UserController');
上記を追加します。
Route::controllerは、/userにgetでアクセスした場合は、getIndex、postでアクセスした場合は、postIndexを実行します。
また、/user/createにgetアクセスした場合は、getCreateにアクセスします。
補足ですが、関数名がgetAddUserというように、キャメルケース(結合している部分が大文字になるラクダ文字)の場合は、user/add-userでアクセスします。
ルートの設定が終了したら、コントローラを作成します。
app/controllers/UserController.php
<?php
class UserController extends BaseController {
public function getIndex(){
return View::make('user')->with('users', User::orderBy('name', 'desc')->get());
}
public function postCreate(){
$user = Input::only('name', 'email', 'tel', 'zip', 'address');
User::create($user);
return Redirect::to('/user');
}
public function postUpdate(){
$user = Input::only('name', 'email', 'tel', 'zip', 'address');
$model = User::find(Input::get('id'));
$model->update($user);
return Redirect::to('/user');
}
public function postDelete(){
User::destroy(Input::only('id'));
return Redirect::to('/user');
}
}
まず、/userのgetのアクセスでは、ユーザのリストを名前降順で出力します。
ここで、View::makeとありますが、テンプレートへ処理を依頼しています。
作成している内容としては、残しはpostでのやりとりで、登録(postCreate)、更新(postUpdate)、削除(postDelete)としています。
次回はBladeを含めたテンプレートを書いていきたいと思います。
WEBアプリケーション関連 人気連載リンク
基礎からPHPWEBアプリ解発を学ぶなら・・
PHP基礎 連載
より実践的なWEBアプリ開発講座!Bootstrap活用を学ぶなら・・
魁!小野の塾 連載