【问题标题】:Can't paginate from Laravel controller无法从 Laravel 控制器分页
【发布时间】:2019-06-04 23:45:53
【问题描述】:

我已经使用 Laravel 几天了,所以这是一个新手问题。我正在尝试很多东西,但我无法对结果进行分页...

我试过了

$productos = Producto::paginate(8);

而不是

 $productos = Producto::get();

我得到了前 8 个结果,但我不能使用链接方法进行分页,得到一个

'方法链接不存在'

错误

public function totalProductos() {

       $productos = Producto::get();
       $productos = $productos->sortByDesc(function ($productos){
       return $productos->detalles->sum('cantidad');

       });  

        return view('admin.usuarios.rankingproductos')->with(compact('productos'));

}

使用该代码我得到了所有结果,但我需要几页来订购它们。你能帮助我吗?谢谢

【问题讨论】:

    标签: laravel pagination


    【解决方案1】:

    你应该试试这个:

    public function totalProductos() {
    
       $productos = Producto::paginate(8);
       $productos = $productos->sortByDesc(function ($productos){
       return $productos->detalles->sum('cantidad');
    
       });  
    
        return view('admin.usuarios.rankingproductos')->with(compact('productos'));
    
     }
    

    您的视图文件如:

    <div class="pull-left">
            <div class="row">
              <div class="col-xs-12">
                <div class="explore-pagination">
                  <nav>
                    <div class="pagination"> {{ $productos->render() }}</div>
                  </nav>
                </div>
              </div>
            </div>   
          </div>
    

    更新答案

    public function totalProductos() {
    
       $productos = Producto::sortByDesc(function ($productos){
       return $productos->detalles->sum('cantidad');
    
       })->paginate(8);;  
    
        return view('admin.usuarios.rankingproductos')->with(compact('productos'));
    
     }
    
    <div class="pull-left">
                <div class="row">
                  <div class="col-xs-12">
                    <div class="explore-pagination">
                      <nav>
                        <div class="pagination"> {{ $productos->links() }}</div>
                      </nav>
                    </div>
                  </div>
                </div>   
              </div>
    

    【讨论】:

    • 谢谢。我在发布之前尝试过,但我得到一个“方法渲染不存在”。错误:(
    • 方法链接不存在
    • @VíctorGV:请运行清除缓存并查看然后尝试
    • 不...我认为问题是我要分页的是一个集合。
    • @VíctorGV:好的
    【解决方案2】:

    更新答案

    public function totalProductos() {
    
       $productos = Producto::paginate(8)->sortByDesc(function ($productos){
       return $productos->detalles->sum('cantidad');
    
       });  
    
        return view('admin.usuarios.rankingproductos', compact(['productos']));
    
     }
    

    '方法链接不存在'

    links 方法将呈现指向结果集中其余页面的链接。这些链接中的每一个都已经包含正确的page 查询字符串变量。

    因此,一旦您检索到结果,您就可以在您的blade 文件中显示结果并呈现页面链接

    <div class="container">
        @foreach ($productos as $product)
            {{ $product->name }}
        @endforeach
    </div>
    
    {{ $productos->links() }}
    

    【讨论】:

    • 谢谢。我在发布之前尝试过,但我得到一个“方法链接不存在”。错误:(
    • 这行不通。我认为问题是我想要分页的是一个集合。不知道如何得到它......我会再看看谷歌搜索谢谢,无论如何
    • 不客气!!!我认为您需要使用 sortByDesc sortBy
    • 你的代码中的主要逻辑没有正确 $productos->detalles->sum()
    【解决方案3】:

    控制器功能是:

    public function totalProductos() {
    
           $productos = Producto::paginate(8)->sortByDesc(function ($productos){
           return $productos->detalles->sum('cantidad');
    
           });  
    
            return view('admin.usuarios.rankingproductos')->with(compact('productos'));
    
         }
    

    你应该在刀片文件中写下这一行{!! $productos-&gt;render() !!}

    <div class="row">
        <div class="col-xs-12">
             {!! $productos->render() !!}
        </div>
    </div>
    

    【讨论】:

    • 在这种情况下,我收到此错误消息:( (1/1) BadMethodCallException Method paginate does not exist. in Macroable.php line 74 at Collection->__call('paginate', array(8) ) 在 ProductoController.php 第 169 行中 ProductoController->totalProductos() 在 call_user_func_array(array(object(ProductoController), 'totalProductos'), array()) 在 Controller.php 第 55 行在 Controller->callAction('totalProductos', array ()) 在 ControllerDispatcher.php 第 44 行中 ControllerDispatcher->dispatch(object(Route), object(ProductoController), 'totalProductos') 在 Route.php 第 203 行
    猜你喜欢
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 2021-04-03
    相关资源
    最近更新 更多