Laravel查询变量为字符串

时间:2016-10-22 07:54:18

标签: php mysql laravel laravel-5 eloquent

我在这里做的可能是愚蠢的,但我是laravel的新手, 我正在使用查询为数据库应用搜索过滤器。 查询正在使用javascript构建并传递给laravel函数。 E.g。

window.open("/filterResults?types="+types);
//types contains a string like "international#global#europe#  etc

现在在Controller中我正在获取该字符串types并将其展开以进行此类查询

    $tquery = "Where('type',".$typesArray[0].")";
    for($offset=1; $offset < count($typesArray); $offset++) {
        $tquery .= "->orWhere('type', ".$typesArray[$offset].")";
    }

并执行这样的查询

$firms = Firm::$tquery->get();

它给了我错误

Access to undeclared static property: App\Firm::$tquery

我怎样才能做我想做的事。

PS。类型是复选框,其中一些可以检查或全部。

3 个答案:

答案 0 :(得分:4)

最好使用whereIn()方法:

$firms = Firm::whereIn('type', $typesArray)->get();

但如果你需要按照自己的方式行事,你可以这样做:

$firm = new App\Firm;

foreach ($typesArray as $type) {
    $firm = $firm->orWhere('type', $type);
}

$firms = $firm->get();

答案 1 :(得分:1)

您是否考虑过查询构建器?

break

答案 2 :(得分:0)

实际上你使用的是糟糕的风格,但你可以看看DB Raw Expressions