画竜点睛を衝く@mapyo

日々やった事をつらつらと書くブログです

LaravelのEloquentを使う

Laravelは使わずに、ORMとして、Eloquentだけ使う方法を検討してみます

ドキュメント

php5.3〜で使いたかったのでドキュメント的にはこちらを見ます

ざっと日本語で調べると
http://laravel3.kore1server.com/docs/database/eloquent

こちらのページが出てきたのですが、バージョンが3系なので、 has_onehasOneとかメソッド名が変わっており、 そのままコピペして動かそうとすると動かないので注意です。

composer でインストール

composer require "illuminate/database=~4.1"

※php5.3で使いたかったので、5.3対応している最新バージョン

実際に使うときにどうするか

https://github.com/mapyo/sample/tree/master/php/eloquent-sample

この辺に動くやつを作って入れた

シングルトン

https://github.com/mapyo/sample/blob/master/php/eloquent-sample/Model/Manager.php

シングルトンを使うやつ

https://github.com/mapyo/sample/blob/master/php/eloquent-sample/Model/Eloquent.php

サンプル

https://github.com/mapyo/sample/blob/master/php/eloquent-sample/sample.php

こんな感じで使えるようになりまっす。

<?php
use Model\Eloquent;
use Model\User;

// composerのautoload設定
$loader = require('./vendor/autoload.php');
$loader->add('Model\\', __DIR__);

// 初期化処理
Eloquent::init();

$user = User::find(1);
var_dump($user->name);

$results = Eloquent::getConnection()
    ->select('select * from my_users');
var_dump($results[0]['name']);

$log = Eloquent::getConnection()->getQueryLog();
var_dump($log);

所感

めんどくさくなって雑にまとめたんだけど、ORM便利!!

動くものはこの辺に書いてます   https://github.com/mapyo/sample/tree/master/php/eloquent-sample