Laravel-无序合并和分页集合

Laravel-无序合并和分页集合,laravel,collections,eloquent,paginator,Laravel,Collections,Eloquent,Paginator,我正在为一件相当困难的事情挣扎,希望你能帮助我。 现在我有以下几点: $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,

我正在为一件相当困难的事情挣扎,希望你能帮助我。 现在我有以下几点:

$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)"));
信息: 这是工作,因为它是一个雄辩的收集,我可以分页这(需要我的无限卷轴)

但现在我想洗牌广告类型本身,意思是: ad_类型1可以有30个条目。他们将按通常的顺序全部归还。每次运行此查询时,我都要洗牌这30个。 我想做->toArray();但同样,没有分页(分页只对有说服力的查询有效,对吗?)

然后我想,嘿,让我们合并这个。 但一旦我这样做了,返回的集合就不再是一个有说服力的集合,而是一个支持集合(对吗?我不是100%确定它是一个支持集合),因此分页不再有效

我读了很多关于如何解决这个问题的帖子,并想出了一个解决方案,那就是“创建我自己的paginator实例” 但见鬼,我还没那么好。我真的不知道,即使在学习了laravel文档之后,如何创建自己的分页器

您可能需要的重要信息: 使用Laravel 5.2
$ads
是动态的,这意味着根据具体情况,使用Ajax发送的请求在稍后可能会有所不同(可能会包含一些内容)

非常感谢您花时间阅读本文,希望您能通过解决这个特殊问题来帮助我和未来的读者

大家好,祝大家周末愉快。

首先请注意: 分页不仅适用于数据库查询。您可以使用
lengshawarepaginator
手动分页,但此处的关键字是manually。查询生成器(没有说服力)可以使用
paginate
自动为您执行此操作

您可以通过执行以下操作来“洗牌”结果

$ads=Ad::where('status',1)
->其中('ad_类型',[1,2,3])
->其中('expire_at','>',date('Y-m-d H:i:s'))
->其中(‘特殊广告’、‘标准广告’)
->orderByRaw(“字段(ad_类型,2,3,1)”)
->orderByRaw(“兰德()”);
这将首先按ad_类型字段排序,然后按随机数(每行不同)排序作为第二排序。

首先请注意: 分页不仅适用于数据库查询。您可以使用
lengshawarepaginator
手动分页,但此处的关键字是manually。查询生成器(没有说服力)可以使用
paginate
自动为您执行此操作

您可以通过执行以下操作来“洗牌”结果

$ads=Ad::where('status',1)
->其中('ad_类型',[1,2,3])
->其中('expire_at','>',date('Y-m-d H:i:s'))
->其中(‘特殊广告’、‘标准广告’)
->orderByRaw(“字段(ad_类型,2,3,1)”)
->orderByRaw(“兰德()”);

这将首先按ad_type字段排序,然后按随机数(每行不同)排序作为第二排序。

首先,您需要花费大量时间和精力。如果我可以问一个关于这个的问题:这是否会洗牌广告类型1、2和3本身,比如说广告类型1由[a、b、c]组成,我希望每次运行查询时都洗牌这些内容。我想我在最初的问题中可能还不够清楚。假设广告类型1有
[a,b,c]
,广告类型2有
[d,e]
,那么当你运行这个查询时,你首先会以随机顺序得到[d,e],然后以随机顺序得到[a,b,c]。每次运行时,内部顺序都会发生变化,但广告类型的顺序仍然是相同的,我会尽快测试出来。如果这是我的解决方案,我会将这篇文章标记为解决方案,并为未来的读者编辑我的初始问题。谢谢你的时间:)非常感谢你的时间和努力。如果我可以问一个关于这个的问题:这是否会洗牌广告类型1、2和3本身,比如说广告类型1由[a、b、c]组成,我希望每次运行查询时都洗牌这些内容。我想我在最初的问题中可能还不够清楚。假设广告类型1有
[a,b,c]
,广告类型2有
[d,e]
,那么当你运行这个查询时,你首先会以随机顺序得到[d,e],然后以随机顺序得到[a,b,c]。每次运行时,内部顺序都会发生变化,但广告类型的顺序仍然是相同的,我会尽快测试出来。如果这是我的解决方案,我会将这篇文章标记为解决方案,并为未来的读者编辑我的初始问题。谢谢你抽出时间:)非常感谢