2016-12-17 46 views
1

我正在嘗試爲我的Laravel項目創建分頁。它將從我的數據庫中搜索市場產品並顯示數據。 bt我在問候調用未定義的方法Illuminate \ Database \ Query \ Builder :: appends()這個錯誤。調用未定義的方法Illuminate Database Query Builder :: appends()

這裏是我的方法

@section('markets-pagination') 
    @if(isset($searched_market) && $searched_market->count()>0) 
     {{$searched_market->appends(
     [ 
        'category'=>app('request')->input('category'), 
        'keyword'=>app('request')->input('keyword') 
        ] 
        )->render()}} 
    @endif 
@stop 

這裏被渲染選項

@section('markets-pagination') 
    {{$markets->render()}} 
@stop 
@section('market-name') 
    @if(isset($market_name)) 
     @foreach($market_name as $item) 
      <h3>{{$item->market_type}}</h3> 
     @endforeach 
    @else 
     <h3>Showing All Listings</h3> 
    @endif 

@stop 

這是搜索控制器

class SearchController extends Controller 
{ 
    private $request; 

    /** 
    * @param Request $request 
    */ 
    public function search(Request $request) 
    { 
     /** 
     * Some values for the menu etc 
     */ 
     $menu_items = MarketType::markets(); 
     //$market_type = MarketType::marketName($id); 

     $this->request = $request; 
     /** 
     * Taking input from the search form fields 
     */ 
     $keyword = $this->request['keyword']; 
     $category = $this->request['category']; 
     //dd($keyword); 
     /** 
     * Retrieving data from the database 
     */ 

     //dd($searched_market->items); 
     if ($keyword != null && $category != null) { 
      $searched_market = Market::searchBoth($keyword, $category); 
     } elseif ($keyword != null) { 
      $searched_market = Market::searchKeyword($keyword); 
     } elseif ($category != null) { 
      //dd('both'); 
      $searched_market = Market::searchCategory($category); 
     } else { 
      $searched_market = ''; 
     } 
     //dd($searched_market->toSql()); 
     return view('frontend.search.product') 
      ->with('menu', $menu_items) 
      ->with('searched_market', $searched_market); 


    } 
} 

這是類別

public function scopeSearchCategory($query, $category) 
    { 

     $this->category = $category; 
     return $query->join('market_type_id', 'market.id', '=', 'market_type_id.market_id') 
      ->join('market_type', 'market_type.id', '=', 'market_type_id.market_type_id') 
      ->where('market_type.id', $this->category) 
      ->select(['market.*', 'market_type.image']) 
      ->distinct() 
      ->paginate(12); 
    } 

回答

1

您的scope函數中不應使用paginate()get(),因爲它將始終返回Illuminate\Database\Eloquent\Builder的實例。

scopeSearchCategory範圍刪除->paginate(12);,並用它在你的控制器:

$searched_market = Market::searchCategory($category)->paginate(12); 
+0

非常感謝主席先生,其工作。 –

相關問題