我在这里做的可能是愚蠢的,但我是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。类型是复选框,其中一些可以检查或全部。
答案 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