我有一个控制器que找到产品并返回查看。 目前我正在尝试进行分页,我正在使用以下代码:
return $this->queryProductsAvailable()
->where('fornecedores.plano_id', $plano)
->select('produtos.*')
->paginate( $limit );
function queryProductsAvailabe:
private function queryProductsAvailable()
{
return Products::join('fornecedores', 'fornecedores.id', '=' ,'produtos.fornecedor_id')
->where( 'fornecedores.ativo', '1')
->where( 'produtos.moderacao', 'P' )
->where( 'produtos.ativo' , '1' )
->where( 'produtos.preco_min', '>', 0 )
->select( 'produtos.*');
}
要查看我将返回以下内容:
return view('Catalogo.index',
[
'products' => $products
]
);
但是当我运行方法$products->render()
时,没有任何事情发生
没有错误,没有消息......
如果我运行$products->total()
,则返回值0
如果我跑$products->nextPageUrl()
没有任何事情发生
用于访问此方法的相同变量用于产品的循环和打印,foreach工作正常。
如果我使用/?page=2
访问具有avprobe
分区的网址,但不会显示网页列表。
有什么想法吗?
---- Edite ----
代码的工作原理如下:
在我的网站上有计划(计划5个级别),使产品先于另一个列出,然后搜索产品我执行以下操作:
在第一次搜索中我寻求30级产品5如果5级没有30种产品我检查了多少产品带来查询,我减少30并在计划中寻找更多产品4来完成30种产品等等上。
在这个过程中,当我们减少计划时,我使用push methodo来添加集合,每当计划减少时,分页限制也会被更改...
所以我有两点可能导致这个问题,第一个是推送方法,第二个是减少计划的行为,并且使用不同的分页来寻找更多的产品,第一个是30。
除了我的查询还随机搜索产品,我相信我需要开发自己的分页符合我的所有要求......
谢谢大家
答案 0 :(得分:0)
paginate()
方法只会在查询中添加限制和偏移量。为了显示结果,您需要返回视图:
$products = $this->queryProductsAvailable()
->where('fornecedores.plano_id', $plano)
->select('produtos.*')
->paginate( $limit );
return view('Catalogo.index',
[
'products' => $products
]
);
答案 1 :(得分:0)
尝试在您的视图中执行此操作以打印分页:
{!! $products !!}}
它不会显示您是否有等于或小于您传递给paginate($limit)
函数的限制的项目
答案 2 :(得分:0)
我会做那些事情:
{!! $products->render() !!}
; ->paginate(...)
替换为->get()
,看看您的查询是否返回了正确的值。 return $this->queryProductsAvailable()
->where('fornecedores.plano_id', $plano)
->select('produtos.*')
->get( $limit )
尝试这些并返回结果。我认为你的查询错误了。
答案 3 :(得分:0)
Paginate返回LengthAwarePaginator对象,而不是Collection。这可能会导致问题。