我正在努力解决一件非常困难的事情,希望您能帮助我。 现在我有以下内容:
$ads = Ad::where('status', 1)
->whereIn('ad_type', [1, 2, 3])
->where('expire_at', '>', date('Y-m-d H:i:s'))
->where('special_ad', 'standard_ad')
->orderByRaw(DB::raw("FIELD(ad_type,2,3,1)"));
信息: 之所以有效,是因为它是一个雄辩的收藏集,我可以对它进行分页(需要我的Infinite Scroll)
但是现在我想改组ad_types本身,意思是: 假设ad_type 1可能有30个条目。它们都将按照通常的顺序退回。每次运行此查询时,我都希望将这30个命令改组。 我考虑过-> toArray();但是再说一次,没有分页(分页仅适用于口才查询,对吗?)
然后我想,嘿,让我们合并一下。 但是,一旦我这样做,返回的集合就不再是Eloquent集合,而是支持集合(对吗?我不是100%确信它是支持集合),因此分页不再起作用。
我读过很多文章来解决这个问题,并且发现一种解决方案可能是“创建自己的分页程序实例” 但是,我还不够好。即使在研究了laravel文档之后,我真的也不知道如何创建自己的分页器。
您可能需要的重要信息:
使用Laravel 5.2
$ads
是动态的,这意味着视情况而定,使用Ajax发送的请求,查询在以后可能有所不同(可能会包含某些内容)。
非常感谢您阅读本文,希望您能通过解决此特定问题为我和未来的读者提供帮助。
问候,祝大家周末愉快。
答案 0 :(得分:1)
首先要注意:
分页不仅适用于数据库查询。您可以使用df1 <- data.frame(x=rep(seq(0,10,by=.1),each=101),
y=rep(seq(10,20,by=.1),times=101))
df1$z <- ((.1*df1$x^2+df1$y)-10)/20
library("ggplot2")
ggplot(mapping=aes(x=x,y=y,size=5,color=z),data=df1)+
geom_point(size = 16, shape = 15)
ggplot(df1, aes(x, y, fill="blue",alpha = z)) + geom_tile()
手动进行分页,但此处是关键词。 查询构建器(不是Eloquent)可以使用LengthAwarePaginator
为您自动完成此操作。
您可以通过类似的操作“洗牌”
paginate
这将首先按ad_type字段排序,然后按随机数(每行不同)进行排序。