让我们说每个用户都有域名,我希望能够以表格格式显示这些域名。
作为用户,我应该能够按域属性进行排序。
域属性包括可排序的实体,例如页面排名。
在laravel中,我抓取了一组与当前登录用户相关的域,如下所示:
$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?
}
我可以像这样结果:
$domains = $users->domains;
$collection = Paginator::make($domains->toArray(), $page, $pagesize);
要获得结果集,我会这样做:
$collection->getItems();
如何将过滤器应用于域结果以按特定值应用排序?
答案 0 :(得分: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);
}
这是有效的代码。
要回答我自己的问题,我遇到的问题只是函数SEE函数($ query)无法访问$ sort值。