Polyscope——面向 Laravel 的以代理为先的开发环境

Laravel whenLoaded - 通过条件关系加载进行性能优化

最后更新于 经过

Laravel whenLoaded - 通过条件关系加载图像进行性能优化

Laravel 的 API 资源功能 whenLoaded() 可以有条件地在 API 响应中包含关系数据,通过防止不必要的数据库查询来优化性能。

下面是使用 whenLoaded() 方法:

命名空间 App\Http\Resources ;
使用 Illuminate\Http\Resources\Json\JsonResource ;
班级 用户资源 延伸 Json资源
{
民众 功能 数组 (请求)
{
返回 [
'ID' => $this -> ID,
'姓名' => $this -> 姓名,
'帖子' => 帖子资源 :: 收藏 $this -> 加载时 '帖子' ))
];
}
}

如果“posts”关系尚未加载,posts 键将从响应中删除,只留下“id”和“name”。

以下是在现实世界中如何运作的一个例子:

命名空间 App\Http\Controllers ;
使用 应用程序\模型\文章 ;
使用 App\Http\Resources\ArticleResource ;
使用 照亮\Http\请求 ;
班级 文章控制器 延伸 控制器
{
民众 功能 指数 要求 $请求)
{
$查询 = 文章 :: 询问 ();
如果 请求 -> 布尔值 'with_author' )){
$查询 -> '作者' (英文):
}
如果 请求 -> 布尔值 '带注释' )){
$查询 -> ([ '评论' => fn ($查询) => $查询 -> 最新的 ()]);
}
返回 文章资源 :: 收藏 (查询) -> 分页 ());
}
}
班级 文章资源 延伸 Json资源
{
民众 功能 数组 (请求)
{
返回 [
'ID' => $this -> ID,
'标题' => $this -> 标题,
'内容' => $this -> 内容,
'作者' => 新的 用户资源 $this -> 加载时 '作者' )),
'评论' => 评论资源 :: 收藏
$this -> 加载时 '评论'
),
'latest_comment' => $this -> 加载时 '评论' , 功能 (){
返回 新的 评论资源 $this -> 评论 -> 第一的 ());
})
];
}
}

此实现通过以下方式演示了高效的关系处理:

  • 根据请求参数动态关系加载
  • 嵌套资源的条件包含
  • 优化查询加载以获得更好的性能

使用 whenLoaded() 有助于创建精益、高效的 API,以优化数据库查询,同时保持在需要时包含相关数据的灵活性。

哈里斯·拉夫托普洛斯摄

高级软件工程师 • Laravel News 员工及讲师 • Laravel Greece Meetup 联合组织者

归档于:
立方体

Laravel 时事通讯

加入超过 4 万名开发者的行列,不错过任何新的技巧、教程等内容。

图像
SerpApi

适用于您的 LLM 和 AI 应用的 Web 搜索 API

访问 SerpApi
Kirschbaum 标志

樱桃树

提供创新和稳定性,确保您的Web应用程序取得成功。

樱桃树
了解 Softtech 的标志

了解软科技

Acquaint Softtech 提供 AI 就绪的 Laravel 开发人员,48 小时内即可上手,每月费用为 3000 美元,没有冗长的销售流程,并提供 100% 退款保证。

了解软科技
鱼叉:新一代时间跟踪和发票标志

Harpoon:新一代时间跟踪和发票系统

新一代时间跟踪和计费软件,帮助您的机构规划和预测盈利的未来。

Harpoon:新一代时间跟踪和发票系统
几天内即可获得 Laravel 代码审查徽标的专家指导

几天内即可获得 Laravel 代码审查方面的专家指导

专家级代码审查!两位拥有 10 年以上 Laravel 开发经验的开发者将为您提供清晰、实用的反馈,帮助团队构建更优质的应用程序。

几天内即可获得 Laravel 代码审查方面的专家指导
Laravel Cloud 标志

Laravel 云

轻松创建和管理服务器,并在几秒钟内部署 Laravel 应用程序。

Laravel 云
Shift 标志

转移

还在运行旧版本的 Laravel?立即实现 Laravel 自动升级和代码现代化,让您的应用程序保持最新状态。

转移
Lucky Media 标志

幸运传媒

Get Lucky Now——拥有十余年经验的 Laravel 开发理想之选!

幸运传媒
Tinkerwell 徽标

廷克威尔

Laravel 开发者必备的代码运行器。可在本地和生产环境中体验 AI、自动补全和即时反馈功能。

廷克威尔
SaaSykit:Laravel SaaS 入门套件徽标

SaaSykit:Laravel SaaS 入门套件

SaaSykit 是一个多租户 Laravel SaaS 入门套件,包含运行现代 SaaS 所需的所有功能,例如支付、美观的结账界面、管理面板、用户仪表盘、身份验证、现成组件、统计数据、博客、文档等等。

SaaSykit:Laravel SaaS 入门套件
SerpApi logo

SerpApi

Access real-time search engine results through a simple API—no more scraping headaches! Use it for AI applications, SEO tools, product research, travel information, and more

SerpApi
PhpStorm 标志

PhpStorm

首选的 PHP IDE,对 Laravel 及其生态系统提供广泛的开箱即用支持。

PhpStorm
Simple Feature Flags for Laravel with Laravel Toggle image

Simple Feature Flags for Laravel with Laravel Toggle

阅读文章
Manage Laravel Cloud Deployments Inside PhpStorm image

Manage Laravel Cloud Deployments Inside PhpStorm

阅读文章
Piper: Laravel-Style Array and String Helpers for PHP's Pipe Operator image

Piper: Laravel-Style Array and String Helpers for PHP's Pipe Operator

阅读文章
Storage Cache Store in Laravel 13.10.0 image

Storage Cache Store in Laravel 13.10.0

阅读文章
Laravel MongoDB Full-Text Search tutorial: The Art of the Relevancy image

Laravel MongoDB Full-Text Search tutorial: The Art of the Relevancy

阅读文章
Drag-and-Drop Sorting for Eloquent Models with Reorderable for Laravel image

Drag-and-Drop Sorting for Eloquent Models with Reorderable for Laravel

阅读文章