http://laravel.com/docs/4.2/eloquent#query-scopes
Laravel5を使っていますが、Laravel4でも考え方は同じなはずです。
Illuminate\Database\Eloquent\Model を継承した Fooクラス が、以下のクエリスコープを持っているとします。
public function scopeBar(Builder $q, $baz) { return $q->whereHas('qux', function ($q) use ($baz) { $q->where('quxx', $baz); }); }とりあえず、このクエリスコープが組み立てるSQLを、バインドされるパラメータ含めて確認できれば良かったので、以下の方法でやってみました。
1.
storage/database.sqlite を作成。コネクションエラーを回避したいだけなので、空ファイルでOKです。
2.
config/database.php を編集。
'default' => env('DB_DRIVER', 'mysql'),3.
phpunit.xml に追記。
<env name="DB_DRIVER" value="sqlite"/>4.
テスト。
public function testScopeBar() { $q = (new Foo())->bar(100); $sql = $q->toSql(); $bindings = $q->getBindings(); dd($sql, $bindings); // これをテストする }より良い方法があれば教えて下さい。
この記事のおかげで、それは私をたくさん助けました!私はまた、多くの人に役立つ素晴らしいライン 監視 やり方法を共有したいと思います。
ReplyDelete