php - 应该如何预先加载属性?
问题描述
我的模型上有一组属性/访问器,用于计算特定飞机类型的航班数量。有没有办法只在我想要它们时返回它们?如果我将它们添加到加载所有资源时appends[]
会出现问题。N+1
/**
* Gets the number of flights flown by the aircraft
*/
public function getTotalFlightsAttribute () {
return Flight::whereHas('aircraft', function($query) {
$query->where('aircraft_type_id', '=', $this->id);
})
->count();
}
我希望能够$aircraftType->load('total_flights')
在我序列化这个模型以发送到 Vue 时调用,就像我可以处理关系一样。我在这里错过了什么吗?我试图调用getAttributes
实例上的方法,它获取值,但只有值。我想简单地将它包含在关系中。
<total-flights :data-aircraft-type="{{ $aircraftType->getAttribute('total_flights') }}"></total-flights>
理想情况下,我正在寻找一种withAttributes
方法。
解决方案
如果我遇到您的问题,我想这应该可以完成工作:
$aircraft_flights = $aircraft->total_flights;
假设 $aircraft 是 Aircraft 的一个实例
推荐阅读
- c# - 哪个位标志一个字节?
- makefile - Makefile 中没有“*”或“?”的通配符函数
- unity3d - 如何在 Unity3D 中通过按住鼠标单击或触摸来移动 2D 角色。(仅限 X 轴)
- javascript - 如何在 html 元素中打印选项值?
- javascript - 如何将翻译文本与原文链接?
- java - pdfbox 打印页面导致 IllegalArgumentException miter limit < 1
- firebase - 如何使用颤振在 Firebase 存储 5.0.1 中上传图像
- javascript - 我的删除事件侦听器给了我一个错误
- mongodb - 猫鼬中的 isModified() - v5
- python - 创建一个默认情况下也可以使用的选项