「OR」ステートメントを含むクエリ文字列を Eloquent に解析しようとしています。これは、他のフィルターなどが適用されているはるかに大きな関数の一部ですが、 or_where グループを作成したいと考えています。
私の混乱は閉鎖に伴います..そして、正しい値が確実に渡されるようにする方法。以下のコードのようにすると、クロージャーの引数が間違っていると表示されますが、それ以外の場合は $or_list 変数へのアクセスを許可できません。
($thing_query
は、この関数および他の関数の過程で作成されるクエリです。)
elseif (strstr($column, 'or|')){
//in format or|=tablename-id=240,tablename-id=8
$or_list = explode(',', $value);
var_dump(explode(',', $value));
$thing_query->where(function($q, $or_list)
{
$count = 0;
foreach ($or_list as $or) {
$arr = explode('=', $or);
$col = $arr[0];
$val = $arr[1];
$col = str_replace('-', '.', $col);
if($count == 0){
$q->where($col, '=', $val);
} else {
$q->or_where($col, '=', $val);
}
$count++;
}
});
}