2014-06-08 48 views
0

可以說每個用戶都有域,我希望能夠以表格格式顯示這些域。Laravel按連接值排序多對多關係分頁

作爲用戶,我應該可以按域屬性進行排序。

域屬性包括可排序的實體,如頁面等級。

在laravel我抓住那些關係到當前登錄的用戶像這樣域的集合:

$domains = $users->domains; 

$collection = Paginator::make($domains->toArray(), $page, $pagesize); 

要獲取:

  $users = User::with(array('domains' => function($query) 
      { 
//     $query->where('name','like','%all%'); //subquery filter 

      }))->whereId(Session::get('user')['id'])->first(); 


     if(isset($sort)) 
     { 
      //What goes here? 
     } 

我可以通過的結果,像這樣itterate結果集我會這樣做:

$collection->getItems(); 

如何將過濾器應用到域結果ap按特定值排序?

回答

0

,所以我就做了打字此消息,並決定嘗試一些:

public function listView() 
    { 

     $order = Input::get('order') === 'asc' ? 'asc' : 'desc'; // default desc 
     $page = Input::get('page') ? Input::get('page') : 1; // default 1 

     $model = new Domain; 

     $pagesize = Input::get('pagesize'); 


     if(isset($pagesize)) 
     { 
      if($pagesize == 'all') 
      { 
       $pagesize = count($model::all()); 
      }elseif(!is_numeric($pagesize)) 
      { 
      $pagesize = DomainsController::$default_pagesize; 
      } 
     }else{ 
      $pagesize = DomainsController::$default_pagesize; 
     } 




     $users = User::with(array('domains' => function($query) 
      { 
       $sort = Input::get('sort') ? Input::get('sort') : NULL; // default NULL 
       $order = Input::get('order') ? Input::get('order') : 'DESC'; // default DESC 
       if(isset($sort)) 
       { 
        $query->orderBy($sort, $order); 
       } 

      }))->whereId(Session::get('user')['id'])->first(); 





     $queries = DB::getQueryLog(); 
     $last_query = end($queries); 



     $domains = $users->domains; 




     $queries = DB::getQueryLog(); 
     $last_query = end($queries); 
     var_dump($last_query); 

     $collection = Paginator::make($domains->toArray(), $page, $pagesize); 


     $data = array(
      'totalCount' => count($domains), 
      'pageSize' => $collection->getPerPage(), 
      'numberOfPages' => $collection->getLastPage(), 
      'currentPage' => $collection->getCurrentPage(), 
      'startNumber' => $collection->getFrom(), 
      'endNumber' => $collection->getTo(), 
      'results' => $collection->getItems(), 
      'sortstr'=>((Input::get('pagesize')) == '' ? '' : '&pagesize='.(Input::get('pagesize'))).'&order='.($order == 'asc' || null ? 'desc' : 'asc'), 
      'querystr'=>(Input::get('pagesize')) == '' ? '' : '&pagesize='.(Input::get('pagesize')).'&order='.(Input::get('order') == '' ? 'desc' : (Input::get('order'))) 
     ); 


     $this->layout->content = View::make('pages.domains.list',$data); 
    } 

這是工作的代碼。

要回答我自己的問題,我遇到的問題只是$ sort值不能從函數SEE函數($ query)中獲取。