无法将Symfony \ Component \ HttpFoundation \ ParameterBag类的对象转换为字符串

时间:2018-06-28 16:49:14

标签: php symfony laravel-5.6

受影响的Symfony版本:〜4.0

说明 我正在使用laravel(5.6。*)并编写如下简单的雄辩查询。

$query = "something";
$products = Product::
where('title', $query)
->paginate($limit);

但是我得到“无法将Symfony \ Component \ HttpFoundation \ ParameterBag类的对象转换为字符串”

昨天情况很好,今天我不知道发生了什么。 请帮我解决一下这个。 我正在使用该查询提供简单的搜索功能。

请检查屏幕快照以获取更多信息。 enter image description here

更新

请查看新代码,但是仍然没有运气。

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;
    }

2 个答案:

答案 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;
}