【问题标题】:How to apply pagination in laravel Searchy extension如何在 laravel Searchy 扩展中应用分页
【发布时间】:2020-08-16 02:26:41
【问题描述】:

我在我的 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();

【问题讨论】:

  • 你不能limitpaginate在一起

标签: laravel laravel-5 laravel-pagination


【解决方案1】:

试试这个:

$searchdata = Searchy::search('snippets')
        ->fields('snippets_name', 'seo_description','snippets_description','snippet_tags')
        ->query($str)
        ->getQuery()
        ->take($numPerPage)
        ->get();

【讨论】:

  • 如何在blade.php中获得分页
【解决方案2】:

在第 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', 'seo_description','snippets_description','snippet_tags')
  ->query($str)
  ->getQuery()
  ->paginate(20);

在视图中

@foreach($searchdata as $data)
    // show data
@endforeach

{{ $searchdata->links() }}

网址:

你的网址/1 你的网址/2 你的网址/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', 'seo_description','snippets_description','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 }}

网址:

你的网址/1 你的网址/2 你的网址/3 ...

【讨论】:

  • 你试过了吗,->offset(0), ->offset(20), ->offset(40), ...
  • 方法 Illuminate\Support\Collection::links 不存在。得到这个
  • 现在如何在blade.php 文件中声明它,看来我正因此而超越。 {{$search_results->links()}}
  • 在每个页面上获得相同的结果
  • 分页查询生成器或查询限制偏移的结果相同?
猜你喜欢
  • 2013-06-08
  • 2012-12-30
  • 2021-10-15
  • 2016-07-17
  • 2017-05-05
  • 2019-03-16
  • 2014-12-26
  • 1970-01-01
  • 2013-01-28
相关资源
最近更新 更多