【问题标题】:Laravel pagination for multiple @foreach in one view一个视图中多个@foreach的Laravel分页
【发布时间】:2020-03-14 23:25:28
【问题描述】:

这是刀片:

<div class="container">
        <table id="myTable" class="table table-bordered sortable">
            <thead>
                <tr>
                    <th onclick="sortTable(0)">Companies</th>
                    <th onclick="sortTable(1)">Devices</th>
                    <th onclick="sortTable(2)">Vehicles</th>
                    <th onclick="sortTable(3)">Drivers</th>
                </tr>
            </thead>

            <tbody>

                @foreach($items as $company)
                <tr>
                    <td>{{isset($company['company'])?$company['company']->name:''}}</td>
                    <td>{{isset($company['device'])?$company['device']->type:''}}</td>
                    <td>{{isset($company['vehicle'])?$company['vehicle']->type:''}}</td>
                    <td>{{isset($company['driver'])?$company['driver']->name:''}}</td>

                </tr>
                @endforeach

            </tbody>

        </table>
    </div>

这是控制器:

public function index(Request $request)
{
    $items = [];
    foreach (Companies::all() as $comp) $items[]['company']=$comp;
    foreach (Device::all() as $index => $dev){
        if($items[$index]) $items[$index]['device']=$dev;
        else $items[]['device']=$dev;
    }

    foreach (Vehicle::all() as $index => $veh){
        if($items[$index]) $items[$index]['vehicle']=$veh;
        else $items[]['vehicle']=$veh;
    }

    foreach (Driver::all() as $index => $dr){
        if($items[$index]) $items[$index]['driver']=$dr;
        else $items[]['driver']=$dr;
    }
    return view('/welcome', ['items'=>$items]);
}

我需要在刀片中为这张表进行分页。但我不知道在这种情况下该把命令放在哪里。 我在“return view...$items->paginate”中写道,但那里出现错误。 有什么解决办法吗?

【问题讨论】:

  • 请查收,希望这篇博文能帮到你codeshipguru.blogspot.com/2019/10/…
  • 根据我对 laravel 的有限经验,您需要为 paginate 提供一个功能参数。
  • @UrsolSolutions 是的,我知道。但是,在“返回”还是在“DB::”中?
  • $items 只是一个数组,它没有分页功能。然而,雄辩的对象返回。所以你可以在一个雄辩的对象上调用它,而不是你自己创建的数组。
  • 在父控制器中?

标签: php laravel pagination laravel-blade


【解决方案1】:

这就是我所拥有的,转到您的控制器查看视图,然后在顶部使用:

 $locations = Locations::paginate(10);

希望这能回答一些问题。

【讨论】:

  • 似乎它正在工作。但我无法在视图中显示分页按钮。
  • @goran_bl 抱歉,我回答这么晚了,在你的桌子下你可以做 {{ $items->links() }}
  • 我成功了。使用 {{$items->links()}},并且必须将 ::all 更改为 ::paginate()。但是使用 datatable 选项,我会做得更好。
  • @goran_bl 好的,不是使用 paginate(10) 或其他你也可以使用具有不同属性的 paginate(0) 的东西,或者如果你想将它们全部分页,请执行类似 paginate( 9999),并且可能会添加一个搜索栏。
  • 我知道。但是数据表看起来更漂亮,搜索栏和分页无需刷新页面即可工作
【解决方案2】:

您可以从数组中创建一个集合并在该集合上调用 paginate:

$collection = collect([1, 2, 3])->paginate();

【讨论】:

    猜你喜欢
    • 2014-04-15
    • 1970-01-01
    • 2013-02-18
    • 2015-11-16
    • 2015-05-17
    • 2016-02-19
    • 1970-01-01
    • 2018-04-10
    • 2019-12-08
    相关资源
    最近更新 更多