Sorting Laravel按连接值排序与分页的多对多关系
假设每个用户都有域,我希望能够以表格格式显示这些域 作为一个用户,我应该能够按照域属性进行排序 域属性包括可排序的实体,如页面排名 在laravel中,我获取了一组与当前登录用户相关的域,如下所示:Sorting Laravel按连接值排序与分页的多对多关系,sorting,laravel,model,Sorting,Laravel,Model,假设每个用户都有域,我希望能够以表格格式显示这些域 作为一个用户,我应该能够按照域属性进行排序 域属性包括可排序的实体,如页面排名 在laravel中,我获取了一组与当前登录用户相关的域,如下所示: $users = User::with(array('domains' => function($query) { // $query->where('name','like','%all%'); //
$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();
如何对域结果应用筛选器以按特定值进行排序?因此,我键入了此消息,并决定尝试以下操作:
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 function($query)访问