问题描述
我已经在laravel应用程序中实现了一个扩展名-https://github.com/livelyworks/Laravel-Searchy
这里我无法申请分页。
$str = preg_replace('/[^A-Za-z0-9\. -]/','',$query);
$searchdata = Searchy::search('snippets')
->fields('snippets_name','SEO_description','snippets_description','snippet_tags')
->query($str)
->getQuery()
->limit(20)
->get();
解决方法
在第1页的-> limit()之后添加-> offset(0)。下一页:偏移量+限制,上一页:偏移量-限制。
假设$ page第一页为1,第二页为2:
$offset = 20 * ($page??1 - 1)
$searchdata = Searchy::search('snippets')->fields('snippets_name','seo_description','snippets_description','snippet_tags')->query($str)
->getQuery()->limit(20)->offset($offset)->get();
更新:
如果要使用分页查询构建器:
$str = preg_replace('/[^A-Za-z0-9\. -]/','',$query);
$searchdata = Searchy::search('snippets')
->fields('snippets_name','snippet_tags')
->query($str)
->getQuery()
->paginate(20);
可见
@foreach($searchdata as $data)
// show data
@endforeach
{{ $searchdata->links() }}
url:
您的网址/ 1 your_url / 2 your_url / 3 ...
但是如果您想使用查询限制:
public function your_function_page($page=1) {
$limit = 20;
$offset = $limit * ( $page > 0 ? $page - 1 : 0 );
$str = preg_replace('/[^A-Za-z0-9\. -]/',$query);
$query = Searchy::search('snippets')->fields('snippets_name','snippet_tags')
->query($str);
$searchdata = $query->getQuery()
->limit($limit)
->offset($offset)
->get();
$total_data = $query->get()
->count();
$total_page = ceil( $total_data / $limit );
$link_pagination = 'url';
$pagination = collect();
for ($i=0; $i < $total_page ; $i++) {
$numb = $i + 1;
$link = $link_pagination . '/' . $numb;
$pagination[] = '<a href="' . $link . '">' . $numb . '</a>';
}
$pagination = $pagination->join(" ");
return view('your_page_data')
->with('searchdata',$searchdata)
->with('pagination',$pagination);
}
视图中:
@foreach($searchdata as $data)
// show data
@endforeach
{{ $pagination }}
url:
您的网址/ 1 your_url / 2 your_url / 3 ...
,尝试一下:
$searchdata = Searchy::search('snippets')
->fields('snippets_name','snippet_tags')
->query($str)
->getQuery()
->take($numPerPage)
->get();