Laravel作为字符串查询变量
我在这里做什么可能是愚蠢的,但我是新手laravel, 我正在应用搜索数据库使用查询过滤器。 正在使用javascript构建查询并将其传递给laravel函数。 例如Laravel作为字符串查询变量
window.open("/filterResults?types="+types);
//types contains a string like "international#global#europe# etc
现在控制器我得到这个字符串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。类型是复选框,其中一些可以选中或全部选中。
这是更好地使用whereIn()
方法:
$firms = Firm::whereIn('type', $typesArray)->get();
但是,如果你需要用你的方式,你可以做这样的事情:
$firm = new App\Firm;
foreach ($typesArray as $type) {
$firm = $firm->orWhere('type', $type);
}
$firms = $firm->get();
您是否考虑过查询构建器?
$firmsQuery = (new Firm)->newQuery();
if($request->has('types')) {
$typesArray = $request->input('types');
foreach ($typesArray as $type) {
$firmsQuery->where(function($query) use ($type) {
$query->orWhere('type', $type);
});
}
}
$firms = $firmsQuery->get();
非静态方法Illuminate \ Database \ Eloquent \ Mode l :: newQuery()不应该被静态调用,假设$ this来自不兼容的上下文 –
哎呀!请检查更新的答案。有一个无意的错误。它应该是'$ firmQuery =(新公司) - > newQuery();' –
Thankyou为您的关注和时间,但现在错误是'未定义的变量:类型' –
真棒'whereIn'岩石,:)谢谢你。 –