gpt4 book ai didi

php - Laravel 无法显示超过 10,000 条的 mysql 记录

转载 作者:行者123 更新时间:2023-11-29 07:25:58 25 4
gpt4 key购买 nike

我无法在 Laravel 中显示来自 mysql 的超过 10,000 的 mysql 行。

我读过有关使用 block 的信息,但我无法使它正常工作,我认为我可以使用数据表 javascript 来完成,它每页最多显示 10 条记录,这正是我想要的,但它会尝试加载首先完整的 10,000 条记录,然后将它们以 10 条为一组。我已将我的代码放在下面。

提前致谢

我的页面 Controller 是这样的:

    public function index($bzname)
{
$user = Auth::guard('business')->user();
$business_admin= BusinessAdmin::where('user_id', $user->id)->first();
$business = Business::where('business_name', $bzname)->first();

$users = User::join('business_users', 'users.id', '=', 'business_users.user_id')
->leftJoin('user_login_times', 'users.id', '=', 'user_login_times.user_id')
->leftJoin('social_logins', 'users.id', '=', 'social_logins.user_id')
->where('business_users.business_id', $business_admin->business_id)
->select('users.*', 'social_logins.provider', 'social_logins.social_id', 'user_login_times.login_time')
->orderBy('login_time', 'desc')->get();

$users = $users->unique('id');

// Get User Roles
$roles = Role::all();

$current_year = date('Y');

$data = [
'user' => $user,
'users' => $users,
'roles' => $roles,
'bzname' => $bzname,
'current_year' => $current_year,
'bzadmin' => $business->owner_name,
];

return View('pages.business_admin.users.show-users', $data);
}

我的用户页面显示为:

  <tbody id="users_table">
@foreach($users as $user)
<tr>
<td>{{$loop->index + 1}}</td>
<td><img src="@if($user->image_url) {{ $user->image_url }} @else /images/faces/empty.png @endif" class="mr-2" alt="image"></td>
<td class="hidden-xs">{{$user->first_name}}</td>
<td class="hidden-xs">{{$user->last_name}}</td>
<td class="hidden-xs" width="100px"><a href="mailto:{{ $user->email }}" title="email {{ $user->email }}">{{ $user->email }}</a>
</td>
<td style="text-transform: capitalize;">{{ $user->gender }}</td>
<td>{{ $current_year - $user->year }}</td>
<td style="text-transform: capitalize;">{{ $user->country }}</td>
<td>
@if($user->provider == null)
Email
@else
{{ $user->provider }}
@endif
</td>
<td>{{ $user->login_time }}</td>


<td class="actions" width="180px">
<a class="btn btn-sm btn-success" href="{{ URL::to('/business/'.$bzname.'/admin/users/' . $user->id) }}"
data-toggle="tooltip" title="View">
{!! trans(('usersmanagement.buttons.show'))!!}
</a>



</td>
</tr>
@endforeach
</tbody>




<script type="text/javascript">
$(function() {
$('#user-listing').dataTable({
dom: 'Bfrtip',
buttons: [
'copyHtml5', 'excelHtml5', 'pdfHtml5', 'csvHtml5'
],
"iDisplayLength": 10,
});
$('#user-listing_filter').attr('style', 'display: none');
});
</script>

最佳答案

不要。

表格中的 10k 行本身可能会使浏览器崩溃。

尤其是在表格中。回流焊本身需要很长时间!

您的服务器可能内存不足。

如果您每秒收到多个请求,则每个下一个请求将花费越来越长的时间。

分页 https://laravel.com/docs/5.4/pagination

不是显示 10k 行,而是显示 10 并在 pagination 上重新加载页面, 或使用 datatables (例如)获取 ajax 分页。

关于php - Laravel 无法显示超过 10,000 条的 mysql 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53720560/

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