受影响的Symfony版本:〜4.0
说明 我正在使用laravel(5.6。*)并编写如下简单的雄辩查询。
$query = "something";
$products = Product::
where('title', $query)
->paginate($limit);
但是我得到“无法将Symfony \ Component \ HttpFoundation \ ParameterBag类的对象转换为字符串”
昨天情况很好,今天我不知道发生了什么。 请帮我解决一下这个。 我正在使用该查询提供简单的搜索功能。
更新
请查看新代码,但是仍然没有运气。
function get(Request $request) {
$limit = 10;
$query = "";
if ($request->has('limit')) {
$limit = $request->limit;
}
if ($request->has('query')) {
$query = $request->query;
}
$products = Product::
where('title','like', '%'.$query.'%')
->orWhere('variant_title', 'like', '%'.$query.'%')
->orWhere('variant_sku', 'like', '%'.$query.'%')
->orWhere('tags', 'like', '%'.$query.'%')
->paginate($limit);
$products = $products->withPath('/products');
return $products;
}
答案 0 :(得分:0)
看起来您的$query
不是字符串,而是类Symfony\Component\HttpFoundation\ParameterBag
的对象。它来自Request
吗?尝试从中获取价值,例如:
$queryValue = $query->get('value_field_name');
答案 1 :(得分:0)
经过数小时的调试,我终于找到了
您不能使用“查询”键作为请求,因为它是在软件包中使用的。
我觉得他们应该提到在类中使用的参数。
所以最终代码将是这样。
function get(Request $request) {
$limit = 10;
$str = "";
if ($request->has('limit')) {
$limit = $request->limit;
}
if ($request->has('str')) {
$str = $request->str;
}
$products = Product::
where('title','like', '%'.$str.'%')
->orWhere('variant_title', 'like', '%'.$str.'%')
->orWhere('variant_sku', 'like', '%'.$str.'%')
->orWhere('tags', 'like', '%'.$str.'%')
->paginate($limit);
$products = $products->withPath('/products');
return $products;
}