【问题标题】:Laravel Yajra datatables ajax serverside slow down page loadLaravel Yajra 数据表 ajax 服务器端减慢页面加载
【发布时间】:2022-12-10 13:52:02
【问题描述】:

我在服务器端使用 Yajra 数据表 true,但页面加载速度非常慢(因为不同的计数而害怕)。我通过删除 ->get() 尝试了解决方案 here,它加载得更快,但这导致了另一个问题,输入搜索(智能:真)返回错误,无法正常工作。任何人都可以帮忙吗?

这是我的代码:

$links = Link::with('owner')
->withCount(['clicks as uniqueClicks' => function($q) {
      $q->select(DB::raw('count(distinct(ip_address))'));
}])
->where('account_id', $account_id)
->orderBy('created_at','desc')
->get(); 

return Datatables::of($links)->make();

是否可以优化此代码?也许从 select raw distinct 改为 groupBy?还是以雄辩的方式做更多?

【问题讨论】:

  • 你得到的错误是什么?
  • @sta 任何搜索查询错误:DataTables 警告:表 id=DataTables_Table_0 - 异常消息:SQLSTATE [42S22]:未找到列:1054 未知列....

标签: ajax laravel laravel-8 yajra-datatable


【解决方案1】:

我的错误是没有说明完整的错误,并且在提到的关于 laravel 关系列的错误中没有找到。

这是文档https://yajrabox.com/docs/laravel-datatables/master/relationships

columns: [
    // columns according to JSON
    { data: '' },
    { data: 'title' },
    { data: 'user_name', name: 'user.manage.name' }, <-- name = relationship column
    { data: 'link' },
    { data: 'created_at', "searchable": false },
    { data: 'action' }
  ],

因此,删除 ->get() 确实会使您的页面加载速度更快。

$links = Link::with('owner')
->withCount(['clicks as uniqueClicks' => function($q) {
  $q->select(DB::raw('count(distinct(ip_address))'));
}])
->where('account_id', $account_id)
->orderBy('created_at','desc');

return Datatables::of($links)->make();

【讨论】:

    猜你喜欢
    • 2018-06-19
    • 2021-02-14
    • 1970-01-01
    • 2020-07-17
    • 2016-09-17
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    相关资源
    最近更新 更多