我希望得到laravel中每1000件物品的第一张记录。
也按$notes=get_post_meta($order_id,'_sageresult',true);
echo $notes['CardType'];
desc
示例数据:
(身份证号码:1000& updated_at:2017)
(id:1001& updated_at:2018)
(id:1002& updated_at:2016)
...更多记录......
(id:2000& updated_at:2017)
(id:2001& updated_at:2018)
(id:2002& updated_at:2016)
...更多记录......
(id:3000& updated_at:2017)
(id:3001& updated_at:2018)
(id:3002& updated_at:2016)
结果:
(id:1001& updated_at:2018)
(id:2001& updated_at:2018)
(id:3001& updated_at:2018)
更新
使用此代码我得到第一条记录,但我想按照上面的例子进行排序。
updated_at
UPDATE2:
谢谢所有♥
我在你的帮助下编写了这段代码,这很好。
现在这种方法好吗?确实有很好的表现吗?
$items = Item::chunk(1000, function ($items) {
foreach ($items as $item) {
echo $item->title . "<br>";
break;
}
});
答案 0 :(得分:0)
这并不像看起来那么难。查看nth()集合方法。 https://laravel.com/docs/5.6/collections#method-nth
$data = Model::orderBy('updated_at', 'desc')->get()
$newStuff = $data->nth(1000)
编辑: 还有slice()方法。这将通过索引返回部分集合作为第一个参数,然后返回作为第二个参数的数量。
Use Method of your choice for looping over the collection
$array[] = $data->slice(x, 1000)->sortByDesc('updated_at')->first();
其中x是设置第一个项目的循环逻辑(因此它从1开始,然后转到1001,2001,3001等)。这将为您提供一系列您正在寻找的内容。可能需要修改一下才能获得所需的确切索引。
答案 1 :(得分:0)
不是最优雅的答案,或许与laravel分页的外观会更好。 https://laravel.com/docs/5.6/pagination
$countItems = Item::count();
$output = collect([]);
$i = 0;
while($i<$countItems){
$i+=1000;
if($i>$countItems)
break;
$output->push(Item::orderBy('id','desc')->skip($i)->first());
}
dd($output->sortByDesc('updated_at'));
答案 2 :(得分:-1)
请尝试以下代码:
$items = Item::orderBy('updated_at','desc')->get()->chunk(1000);
foreach ($items as $item) {
echo $oneitem->title . "<br>";
break;
}