受影响的 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;
}
天哪,经过几个小时的调试终于我发现了
您不能对您的请求使用“query”键,因为它已在包中使用。
我觉得他们应该提及他们在课堂上使用的参数。
所以最终的代码会是这样的。
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;
}
看起来你的
$query
不是字符串,而是类Symfony\Component\HttpFoundation\ParameterBag
的对象。是来自Request
吗?尝试从中获取价值,例如:
$queryValue = $query->get('value_field_name');
它适用于
$request->get('value_field_name'); // Right
而不是
$request-> value_field_name;