获取laravel中每1000件物品的第一张记录

时间:2018-03-07 15:04:10

标签: laravel

我希望得到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;
    }
});

3 个答案:

答案 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;

    }