首页 > 解决方案 > 类 Illuminate\Database\Eloquent\Builder 的对象无法在过滤中转换为字符串

问题描述

我正在制作搜索功能,并且喜欢添加过滤器我的搜索,我的代码就像

代码区域 ================================================== =========

public function search(Request $request) {

    $q = $request->input('q');

    $resources = Resource::where('title','LIKE','%'.$q.'%')

                    ->orWhere('name','LIKE','%'.$q.'%')

                    ->orWhere('batch','LIKE','%'.$q.'%')

                    ->orWhere('mba/emba','LIKE','%'.$q.'%')

                    ->orWhere('topic','LIKE','%'.$q.'%')

                    ->orWhere('year','LIKE','%'.$q.'%')

                    ->orWhere('company','LIKE','%'.$q.'%')

                    ->orWhere('supervisor','LIKE','%'.$q.'%')

                    ->orWhere('abstract','LIKE','%'.$q.'%') 

                    ->latest()->paginate(5);
    if(count($resources) > 0) {

        return view('blog', [

            'resources' => $resources

        ]);

    }else {

         echo "there is nothing like that result";

    }

}

我正在使用输入值进行搜索,我想过滤并像这样更改我的代码....所以我可以从现有的查询中过滤

代码区================================================= =============

 public function search(Request $request) {

    $q = $request->q;

    $resources = Resource::where('title','LIKE','%'.$q.'%')

                    ->orWhere('name','LIKE','%'.$q.'%')

                    ->orWhere('batch','LIKE','%'.$q.'%')

                    ->orWhere('mba/emba','LIKE','%'.$q.'%')

                    ->orWhere('topic','LIKE','%'.$q.'%')

                    ->orWhere('year','LIKE','%'.$q.'%')

                    ->orWhere('company','LIKE','%'.$q.'%')

                    ->orWhere('supervisor','LIKE','%'.$q.'%')

                    ->orWhere('abstract','LIKE','%'.$q.'%');

    $author = $request->author;

    if($author != '') {


        //"This is where the error message show"
        //"I would like to filter from above query"
        =======================================================
        $resources = $this->$resources->where('name', $author) 
        =======================================================
        dd($resources);
    }

    $resources = $resources->latest()->paginate(5);               
    if(count($resources) > 0) {
        return view('blog', [
            'resources' => $resources
        ]);
    }else {
         echo "there is nothing like that result";
    }
}

因此,我最终得到消息 =>“类 Illuminate\Database\Eloquent\Builder 的对象无法转换为字符串”

我是菜鸟……所以请帮忙……谢谢大家

标签: laravel-5

解决方案


问题是$this->$resources

PHP 假定这$resources是当前类 ( $this) 的属性,因此尝试将其转换为字符串。

将行替换$resources = $resources->where('name', $author);为修复它。


推荐阅读