ORMをフレームワークの外から?!
Laravelはいわゆるフルスタックなフレームワークでこういうのしたいなっていうのはだいたい揃っています。とても便利なのですが、大規模なアプリケーションとなると処理を共通化してフレームワークから離したくなってきます。
またバッチ書いていてこのORMだけを使いたいってシーンももしかしたらあろうかと思います。
分離したときのDB接続
- フレームワークがよしなにやってくれてるので実際はよくわからない。
- コード読めという声が聞こえてきますが、そこに時間費やしたくないのが心情としてある。
- 公式ドキュメントには書いてなさそう。
- こねくり回して自前実装でもいいけど、やはりそんな時間使いたくない。
結論
- 公式githubのREADME.mdに書いてあった。
- illuminate/database
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();
}
// 以下略
......
......
}