gpt4 book ai didi

php - 对每个组的用户有限制的预加载

转载 作者:搜寻专家 更新时间:2023-10-31 21:52:14 25 4
gpt4 key购买 nike

我有一个简单的组列表,其中列出了用户。

$groups = Group::with(['users' => function ($query) {
$query->orderBy('last_login', 'ASC');
}])->get();

通过该代码,我获得了所有数据。

enter image description here

我的目标是将该列表中的最大用户数限制为每个列表 10 个。问题是当我将 ->limit(10) 添加到代码时......我限制了所有组中的所有用户。因此,如果我有 10 个组,我可能会在每个组中获得 1 个用户。

$groups = Group::with(['users' => function ($query) {
$query->orderBy('last_login', 'ASC')->limit(10);
}])->get();

我的问题是如何将每个组限制为 10 个用户。

现在没有 ->limit(10) 我无法在 foreach 中使用该代码获得我的结果...

@if ($loop->iteration == 10)
@break
@endif

但它在优化方面并不完美,因为我总是拥有所有用户并且只显示 10 个。

enter image description here

最佳答案

您可能必须使用 offset 或 skip() 方法:

$users = DB::table('users')
->offset(10)
->limit(5)
->get();

$users = DB::table('users')->skip(10)->take(5)->get();

在此示例中,offset/skip 是您要跳过的行数,然后取下 5 个值。在这种情况下,它将跳过前 10 行,并为您提供第 10-15 行的数据。您必须每次都将偏移值传递给您的 Controller 。

如果你不想做这些,你可以使用 laravels 分页:

$users = User::where('votes', '>', 100)->paginate(15);

15 是您希望每页显示的数据数。将其返回到您的 View ,您将像这样显示它:

@foreach ($users as $user)
{{ $user->name }}
@endforeach

{{ $users->links() }}

这适用于 larave 5.*,只需搜索您正在使用的版本的正确文档即可。

Laravel Pagination Doc

Laravel 5.3 Skip Doc

关于php - 对每个组的用户有限制的预加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39537703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com