最近のPHP系ORMでもメソッドチェインなものが増えてきました。
そこで、例えば検索条件がテーブルに記録されていて、
そのレコードに沿ったwhere条件が連なっている場合を考えてみます。
そんなときは、こんな感じのコーディングもできますよ、という例です。
LaravelのEloquentを想定していますが、配列の場合はarray_reduceでいけますね。
<?php
$condition = SearchCondition::all();//ここに検索条件が記録されているとします
//field:フィールド名,value:検索値
$eloquent = new SomeModel; //\Illuminate\Database\Eloquent\Model継承のモデル
$result = $condition->reduce(function($carry, $item) {
return $carry->where($item->field, '=', $item->value);
}, $eloquent)->get();