如何通过使用 laravel 雄辩设置开始和结束偏移量来检索块中的数据?



我想以块的形式获取数据,例如第一次尝试从 1 到 50 条记录,第二次尝试从 51 到 100 条记录。我看到了关于块 () 的 laravel 文档,但没有自定义偏移量的规定。

我认为你不需要在这里构建一些自定义的东西。使用标准chunk()应该真正适合您:

Model::chunk(50, function ($many) {
foreach ($many as $one) {
....
}
});

更新

如果要从外部向Laravel发送page号码(如1,2,3),可以使用skip()take()

Model::skip(($page - 1) * 50)->take(50)->get();

我也有类似的问题。需要在 192k 记录表上使用具有大量联接的大型查询。这是我所做的:

查询是这样的:

DB::connection('mysql')
->table('table1 as A')
->join(
'table2 as B',
'A.Provincia',
'=',
'B.IdProvincia'
)
->select(
'A.NoExpediente',
...
'A.FechaCita'            
)
->orderBy('NoExpediente')
// here goes the offset
->chunk(function ($records) use (&$offset) {
foreach ($records as $record) {
if ($offset > 0) {
$offset--;
continue;
}
// do something with $record
}
);

我知道解决方案并不理想,因为无论如何记录都是从数据库带来的,但它为我节省了很多处理// do something with $record跳过的。

最新更新