小编ven*_*999的帖子

Laravel Datatables 当超过 10k 数据时加载缓慢

加载超过 10k 条记录时性能缓慢

页面加载时间:8.00 秒

问: 有没有人遇到类似的问题,当数据超过10k时,返回数据会很慢?有什么优化的想法吗?当用户访问页面时,即使我已经在表中建立了索引,也需要花费近 8 秒的时间来加载所有数据。

系统详情

PHP 7.3、Laravel 8.4、Laravel-Yajra-Datatables v9.18。

代码

控制器

public function getPlayerlistAction(Request $request)
    {
        if ($request->ajax()) {

            $player = Player::where('parent_id', Auth::user()->id)
                        ->with(['getGames' => function ($q){
                            $q->select('id', 'title', 'display_name');
                        }])
                        ->orderBy('created_at', 'desc')
                        ->get()
                        ->toArray();

            return Datatables::of($player)
                //->addIndexColumn()
                ->addColumn('games', function ($row) {
                    $data = $row['get_games']['display_name'];
                    return $data;
                })
                ->addColumn('phone_number', function ($row) {
                    $data = "";
                    if($row['phone_number'] == '000'){
                        $data = "-";
                    }else{
                        $data = $row['phone_number'];
                    }
                    return $data;
                })
                ->addColumn('balance', function ($row) {
                    $data = …
Run Code Online (Sandbox Code Playgroud)

jquery datatables laravel

2
推荐指数
1
解决办法
4772
查看次数

Laravel 创建日期返回不同的格式

我尝试从数据库中选择create_data,数据库中的日期格式类似于“2021-05-18 11:06:01”,但是当我检索并显示它时,它将显示类似于“2021-05”的格式-18T03:06:01.000000Z”。有谁知道为什么会变成这样吗?我想要的日期实际上就像数据库存储“2021-05-18 11:06:01”。然而,DB内的create_date格式是UTC +8,但接收时会显示UTC格式。

在此输入图像描述

数据返回

[0] => Array (
    [id] => 1
    [log_name] => login
    [description] => login
    [subject_type] => App\Models\Users
    [subject_id] => 0
    [causer_type] => App\Models\User
    [causer_id] => 2
    [properties] => ""         
    [created_at] => 2021-05-18T03:06:01.000000Z
);
Run Code Online (Sandbox Code Playgroud)

代码

$lastLoggedActivity = ActivityLog::where('causer_id', $userid)
    ->orWhereIn('subject_id', $selectparentid)
    ->with('getLogType')
    ->with('getCauserDetails')
    ->orderBy('created_at', 'desc')
    ->get()
    ->toArray();
Run Code Online (Sandbox Code Playgroud)

php laravel eloquent

1
推荐指数
1
解决办法
1万
查看次数

标签 统计

laravel ×2

datatables ×1

eloquent ×1

jquery ×1

php ×1