4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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();

   }

   // 以下略
   ......
   ......
}
4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?