1. Qiita
  2. 投稿
  3. PHP

Laravel5でEloquentをフレームワークの外から使う方法

  • 2
    いいね
  • 0
    コメント

ORMをフレームワークの外から?!

Laravelはいわゆるフルスタックなフレームワークでこういうのしたいなっていうのはだいたい揃っています。とても便利なのですが、大規模なアプリケーションとなると処理を共通化してフレームワークから離したくなってきます。

またバッチ書いていてこのORMだけを使いたいってシーンももしかしたらあろうかと思います。

分離したときのDB接続

  • フレームワークがよしなにやってくれてるので実際はよくわからない。
    • コード読めという声が聞こえてきますが、そこに時間費やしたくないのが心情としてある。
  • 公式ドキュメントには書いてなさそう。
  • こねくり回して自前実装でもいいけど、やはりそんな時間使いたくない。

結論

PHPUnitだとこういうイメージ

下記のようにすればModel::find(1)のように普通に使えるようになります。

<?php
use PHPUnit\Framework\TestCase;
use Illuminate\Database\Capsule\Manager as Capsule;

class HogeTest extends TestCase
{
    public static function setUpBeforeClass()
    {
        $capsule = new Capsule();
        $capsule->addConnection([
            'driver' => 'mysql',
            'host' => 'localhost',
            'username' => 'hoge',
            'password' => 'hoge',
            'database' => 'hoge',
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
        ]);
        $capsule->setAsGlobal();
        $capsule->bootEloquent();

   }

   // 以下略
   ......
   ......
}
Comments Loading...