【问题标题】:Laravel - what is the best and most efficient way of displaying, sorting and filtering an array of data? (not database)Laravel - 显示,排序和过滤数据数组的最佳和最有效的方法是什么? (不是数据库)
【发布时间】:2021-01-14 21:21:20
【问题描述】:

我发出一个返回 JSON 项目列表的外部 API 请求。注意,没有使用数据库。

现在我需要在屏幕上显示这些数据,并允许用户更改顺序(按名称、按 ID)、分页和过滤结果。

我也许可以使用 javascript 以一种经典的方式来做到这一点,但是有没有一个好的流动数据排序/过滤/显示机制?

我认为 Vue 在这里可能会派上用场(我没有使用它的经验,但我猜它比使用 vanialla JS 更有效)?

关于最佳实践和最干净最有效方法的任何想法或建议?

【问题讨论】:

  • vue js 不附带排序功能。 JS得到了sortfilter之类的。
  • 很高兴知道,谢谢

标签: laravel sorting


【解决方案1】:

Laravel collections 为处理数据集提供了流畅的机制。 sortBy 方法是处理结构化数据的一个很好的例子。

$collection = collect([
    ['name' => 'Desk', 'price' => 200],
    ['name' => 'Chair', 'price' => 100],
    ['name' => 'Bookcase', 'price' => 150],
]);

$sorted = $collection->sortBy('price');

$sorted->values()->all();

/*
    [
        ['name' => 'Chair', 'price' => 100],
        ['name' => 'Bookcase', 'price' => 150],
        ['name' => 'Desk', 'price' => 200],
    ]
*/

【讨论】:

  • 谢谢,这看起来不错。但我认为我倾向于对结果进行过滤和排序,而无需重新加载页面。
  • 啊,你用 [laravel] 标记了它,所以我假设你是从 PHP 中进行 API 调用的。
  • 我是,虽然您的建议将是一个很好的解决方案,但它涉及每次我们更改排序/过滤器时重新加载页面。我想也许使用 Ajax 来调用数据后体渲染,但由于 API 请求只接受来自服务器 IP,而不是用户 IP,我必须将请求返回给服务器,然后服务器将请求信息 fom API,我认为这太慢了。
  • 只需设置一个 API 路由来代理对外部 API 的请求,并在服务器上进行您需要的任何转换(例如,array_only,如果您需要隐藏某些数据)。您还可以缓存外部 API 响应(或定期预加载)以避免在您希望此路由繁忙时一直调用它。如果您有其他数据要融合到外部 API 响应中,那么我会在该数据存在的任何地方进行排序/过滤。
  • 此外,还有一些非常好的显示框架专门用于 Laravel - 查看 Inertia.js 或 Livewire。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 2018-04-07
  • 1970-01-01
  • 1970-01-01
  • 2018-08-30
  • 2017-06-08
  • 2019-02-28
相关资源
最近更新 更多