2016-12-17 12 views
1

私のLaravelプロジェクトのページネーションを作成しようとしています。私のデータベースからマーケット製品を検索し、データを表示します。 bt挨拶しています未定義のメソッドを呼び出す\ Database \ Query \ Builder :: appends()このエラー。ここで 定義されていないメソッドを呼び出します。 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 

これは、このカテゴリ

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); 
    } 
で検索コントローラー

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


    } 
} 

IS

答えて

1

scope関数ではpaginate()またはget()を使用しないでください。常にIlluminate\Database\Eloquent\Builderのインスタンスが返されます。

はあなたscopeSearchCategory範囲から->paginate(12);を外し、としてあなたコントローラーでそれを使用します。

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

どうもありがとう卿、その作品。 –

関連する問題