【问题标题】:How to add pagination on my search results page?如何在我的搜索结果页面上添加分页?
【发布时间】:2020-02-20 15:59:18
【问题描述】:

我需要在我的结果页面中添加分页。我需要在我的页面上显示最多 6 个帖子,然后添加分页。如何将它添加到我的函数中?我正在使用 Laravel 5.2 版。

我不确定是否可以使用render()

这是我的控制器:

 $user = CareerSolution::where ( 'subject', 'LIKE', '%' . $q . '%' )
                      ->where('career_solutions.topic_category_id', '=', $c)
        ->join('role_users' , 'role_users.user_id', '=', 'career_solutions.user_id')
        ->join('roles' , 'roles.id', '=', 'role_users.role_id')
        ->join('users', 'users.id', '=', 'career_solutions.user_id')
        ->join('categories', 'categories.id', '=', 'career_solutions.topic_category_id')
        ->orWhere ( 'career_solutions.user_id', 'LIKE', '%' . $q . '%' )
        ->orWhere ( 'career_solutions.id', '=', 'events.subject')
        ->orWhere('career_solutions.topic_category_id' ,'=', $category->id)
        ->orWhere ( 'career_solutions.user_id', '=', 'users.username')
       ->select('career_solutions.id as id','subject','users.id as user_id','username', 'profile_picture', 'role_id', 'optional', 'topic_category_id','categories.category')
         ->get ();

这是我的看法:

<?php $count_event = 1; ?>
        @foreach($details as $user)
    @if($count_event == 1)


<div class="news-v2-desc" style="background-color: #f7f8fa">
<div class="row">
  <div class="col-md-2">

    <?php $img = "thumbnail/".$user->profile_picture; ?>

    @if(@getimagesize($img))
      <img style="position: relative;top: 9px;" class="img-circle noticeboard-profile-picture-neo col-md-2" src="{{ url('ass/50/50?'.$img) }}" alt="">
    @endif
  </div>
  <div class="col-md-10 noticeboard-subjecttitle">
    <h4 class="noticeboard-title" style="text-align: justify;position: relative;right: -15px;">

      <a href="{{ url( $test ) }}/{{ $user->id }}_{{ Slugify::slugify( $user->subject  ) }}" class="noticeboard-subject">{{ $user->subject }} </a>


    </h4>

    <ul style="position: relative;right: -15px" class="list-unstyled list-inline blog-info noticeboard-ul-link">
      <li>
        @if($user->role_id == 1)
        <i class="icon-user"></i>
        <a href="{{ url('')}}/{{$user->username}}">{{$user->username}}</a>
        @else
        <i class="icon-hotel-restaurant-172 u-line-icon-pro fa- fa-lg"></i>
        <a href="{{ url('')}}/{{$user->username}}">{{$user->username}}</a>
        @endif

      </li>
      <li>
        <i style="font-size: 11px" class="icon-{{$typee}}"></i>
        <a href="{{ url('') }}/{{$link}}">{{ $type }}</a>
      </li>
                        </ul>
  </div>
</div>

<p><a style="border-radius: 0rem !important;border: 0.1rem solid #18ba9b" class="btn-z btn-xs  g-mr-10 g-mb-15" href="{{ url( $test ) }}/{{ $user->id }}_{{ Slugify::slugify( $user->subject  ) }}">Read more <i class="fa fa-angle-double-right margin-left-5"></i></a></p>
</div>
</div>
@endif

【问题讨论】:

  • 你应该使用paginate(6) docs而不是使用get()方法
  • 请添加处理$user结果的视图部分。
  • @ka_lin 谢谢你,它正在使用你的方法!

标签: php database laravel laravel-5 pagination


【解决方案1】:

在你的控制器中,你可以拥有这个

$user = CareerSolution::where ( 'subject', 'LIKE', '%' . $q . '%' )
    ->where('career_solutions.topic_category_id', '=', $c)
    ->join('role_users' , 'role_users.user_id', '=', 'career_solutions.user_id')
    ->join('roles' , 'roles.id', '=', 'role_users.role_id')
    ->join('users', 'users.id', '=', 'career_solutions.user_id')
    ->join('categories', 'categories.id', '=', 'career_solutions.topic_category_id')
    ->orWhere ( 'career_solutions.user_id', 'LIKE', '%' . $q . '%' )
    ->orWhere ( 'career_solutions.id', '=', 'events.subject')
    ->orWhere('career_solutions.topic_category_id' ,'=', $category->id)
    ->orWhere ( 'career_solutions.user_id', '=', 'users.username')
    ->select('career_solutions.id as id','subject','users.id as user_id','username', 'profile_picture', 'role_id', 'optional', 'topic_category_id','categories.category')
    ->paginate(6);

在你的刀片模板中,插入这个

    {{ $user->links }}

上面会自动为你创建分页。

【讨论】:

    【解决方案2】:

    在 laravel 中使用 paginate 函数进行默认分页

    $paginate = 6;
     $user = CareerSolution::where ( 'subject', 'LIKE', '%' . $q . '%' )
                          ->where('career_solutions.topic_category_id', '=', $c)
            ->join('role_users' , 'role_users.user_id', '=', 'career_solutions.user_id')
            ->join('roles' , 'roles.id', '=', 'role_users.role_id')
            ->join('users', 'users.id', '=', 'career_solutions.user_id')
            ->join('categories', 'categories.id', '=', 'career_solutions.topic_category_id')
            ->orWhere ( 'career_solutions.user_id', 'LIKE', '%' . $q . '%' )
            ->orWhere ( 'career_solutions.id', '=', 'events.subject')
            ->orWhere('career_solutions.topic_category_id' ,'=', $category->id)
            ->orWhere ( 'career_solutions.user_id', '=', 'users.username')
           ->select('career_solutions.id as id','subject','users.id as user_id','username', 'profile_picture', 'role_id', 'optional', 'topic_category_id','categories.category')
             ->paginate($paginate);
    

    也用在刀片模板中

    <ul class="pagination">
            {!! $user->render() !!}
        </ul>
    

    【讨论】:

    • 嗨,我收到了这个错误Call to undefined method Illuminate\Database\Query\Builder::render(),我使用的是 laravel 5.2。
    猜你喜欢
    • 2017-10-30
    • 2015-05-16
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    相关资源
    最近更新 更多