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

问题描述 投票:0回答:3

受影响的 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;
    }
php symfony laravel-5.6
3个回答
23
投票

天哪,经过几个小时的调试终于我发现了
您不能对您的请求使用“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;
}

2
投票

看起来你的

$query
不是字符串,而是类
Symfony\Component\HttpFoundation\ParameterBag
的对象。是来自
Request
吗?尝试从中获取价值,例如:

$queryValue = $query->get('value_field_name');

0
投票

它适用于

$request->get('value_field_name');   // Right

而不是

$request-> value_field_name;
© www.soinside.com 2019 - 2024. All rights reserved.