【问题标题】:Laravel pagination problem one by one pagesLaravel分页问题一页一页
【发布时间】:2019-08-29 11:16:30
【问题描述】:

对不起,我的 laravel 分页有问题 例如,在我的表 16 行中,我进行分页 (10),分页在第一页从 1 到 10 给我,并且在从 1 到 6 的第二页中,我想要从 1 到 10 以及从 11 到 16 的正常分页,请提供帮助

 public function allappointmnts(){


  $allapo=DB::table('bookappoitments')->orderBy('times.id')
  ->join('users','bookappoitments.users_id','users.id')
  ->join('times','bookappoitments.times_id','times.id')
  ->join('dates','bookappoitments.Dates_id','dates.id')
  ->paginate(10);

   return view('admin.Managers.allappoinments',compact('allapo'));

}

在刀片页面中:

  <div class="text-center">
    {!! $allapo->links(); !!}
  </div>

桌子:

 <table class="table table-bordered table-hover table-striped">
                                        <thead>
                                            <tr>
                                                <th>#</th>
                                                <th>Date</th>
                                                <th>Time</th>
                                                <th>Employee</th>
                                                <th>Name</th>
                                                <th>Email</th>
                                                <th>Company</th>
                                                <th>Phone</th>
                                                <th>Location</th>
                                                <th>Remarks</th>
                                                <th style="text-align: center;">Action</th>


                                            </tr>
                                        </thead>
                                        <tbody>
                                            <tr>

                                                @foreach($allapo as $Appointments)

                                                <td>{{ $loop->index+1 }}</td> 
                                                <td>{{ $Appointments->Dates }}</td>
                                                <td>{{ $Appointments->from_to }}</td>
                                                <td>{{ $Appointments->name }}</td>
                                                <td>{{ $Appointments->gustname }}</td>
                                                <td>{{ $Appointments->gustemail }}</td>
                              <td>{{ $Appointments->gustcompany }}</td>
                              <td>{{ $Appointments->gustphone }}</td>
                                                <td>{{ $Appointments->Location }}</td>
                                                <td>{{ $Appointments->Remarks }}</td>

                              <td>
                                 <a class="btn btn-success btn-mini deleteRecord " href="{{url('showbymanagment',$Appointments->id)}}">Show</a>

                     </td> 


                                                </tr>

                                                @endforeach

【问题讨论】:

  • 您确定第二页实际上没有加载 11-16 元素..?这里没有什么要说明的。
  • 是的,我相信我无法想象 :)
  • 你能展示一些截图吗?
  • 好的,只是秒

标签: php laravel


【解决方案1】:

您的问题是您正在使用每个循环的当前索引 - 它始终在每页的 1-10 范围内(因为每页有 10 个元素)。

你需要得到你正在使用的当前页面

$allapo->currentPage()

然后得到你得到的每页元素的数量,使用

$allapo->perPage()

将这两个相乘,它将成为您分页的基数,这意味着您应该从这个数字开始递增。

索引表应该是

{{ $allapo->currentPage() * $allapo->perPage() + $loop->index }}

而不是

{{ $loop->index+1 }}

然后,要修复标题编号(顶部的 10 和 6),获取结果总数而不是使用页面的计数

$allapo->total()

有关详细信息,请参阅Laravel documentation

【讨论】:

  • 您需要描述究竟是什么问题——发生了什么,应该发生什么。我们无法读懂您的想法或查看您屏幕上的内容。
【解决方案2】:

不完全确定,但您需要编写某种函数来解决此问题。

基本上你需要这样做:

  1. 获取页码(例如:1)
  2. 乘以每页的行数(例如:10)
  3. 添加迭代次数
  4. 减去每页数

function correct_pagination_numbers($cp, $pp, $counter)
{
    $c = (($pp * $cp) + $counter) - $pp;
    return $c;
}

然后您可以像这样在视图中调用该函数:

<td>{{ correct_pagination_numbers($allapo->currentPage(), $allapo->perPage(), $loop->index) }}</td> 

这可能是在帮助文件中执行此操作的最佳解决方案。如果您不知道如何创建帮助文件并自动加载它,可以查看here

【讨论】:

  • 谢谢你的回答,但给我打电话给未定义的函数 correct_pagination_numbers() (查看:C:\xampp\htdocs\–-prefer-dist - final 没有删除\resources\views\admin\Managers \allappoinments.blade.php)
  • 您是否更改了 composer.json 文件以便自动加载帮助文件?
【解决方案3】:

试试这个代码:

<?php $i = $lists->perPage() * ($lists->currentPage() - 1); ?>
   <table class="table table-bordered table-hover table-striped">
      <thead>
         <tr>
          <th>#</th>
          <th>Date</th>
          <th>Time</th>
          <th>Employee</th>
          <th>Name</th>
          <th>Email</th>
          <th>Company</th>
          <th>Phone</th>
          <th>Location</th>
          <th>Remarks</th>
          <th style="text-align: center;">Action</th>


          </tr>
        </thead>
       <tbody>
        <tr>
@foreach($allapo as $Appointments)
  <td><?php $i++; ?>{{ $i }} </td> 
  <td>{{ $Appointments->Dates }}</td>
  <td>{{ $Appointments->from_to }}</td>
  <td>{{ $Appointments->name }}</td>
  <td>{{ $Appointments->gustname }}</td>
  <td>{{ $Appointments->gustemail }}</td>
  <td>{{ $Appointments->gustcompany }}</td>
  <td>{{ $Appointments->gustphone }}</td>
  <td>{{ $Appointments->Location }}</td>
  <td>{{ $Appointments->Remarks }}</td>
  <td><a class="btn btn-success btn-mini deleteRecord " href=" 
{{url('showbymanagment',$Appointments->id)}}">Show</a></td> 
</tr>
@endforeach

【讨论】:

  • 谢谢,但给我一个错误 Undefined variable: i (View: C:\xampp\htdocs\–-prefer-dist - final without delet\resources\views\admin\Managers\allappoinments.blade .php)
  • 您是否在 foreach 之前粘贴了以下代码? perPage() * ($lists->currentPage() - 1); ?>
【解决方案4】:

试试看
@foreach($allapo as $key => $Appointments)

{{ $key + $allapo->firstItem() }}

@endforeach

【讨论】:

    【解决方案5】:

    看到正确的数字换行

    <td>{{ $loop->index+1 }}</td> 
    

    到:

     <td>{{ ($allapo->currentPage() - 1) * $allapo->perPage() + $loop->iteration }} <td>
    

    【讨论】:

    • 从 1 到 16 循环非常好,但总有任何代码可以给我在第一页 10 和第二页 6 中仍然给我的每一页上的总数
    猜你喜欢
    • 2017-11-22
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多