1

「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++;
                }
        });
}
4

1 に答える 1

3

これを試して:

$thing_query->where(function($q) use($or_list)
{
...

http://blog.dubbelboer.com/2012/04/07/php-use-keyword.html

于 2013-06-23T00:05:20.647 に答える