当我创建一个api并使用laravel资源时,是更好地获取完整的数据,然后选择在资源文件中发送哪些列,还是从数据库中选择数据时,确定应该选择哪些列?
1)
return UserResource::collection(User::all());
// Resource file:
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name
];
}
return UserResource::collection(User::all('id', 'name'));
// Resource file:
public function toArray($request)
{
return parent::toArray($request);
}
如果数据库中有数百万条记录,我肯定会建议从表中获取特定的列。下面是我用36K
记录运行的一些统计数据
SELECT * from `app_logs` // + 0.172 sec
SELECT ID FROM `app_logs`// + 0.016 sec
所以即使只有几千条记录,这种差异也足够了。
然而,为了简单和不考虑性能,您也可以使用laravel花式语法
User::all()
检查@Marc_关于为什么只选择所需列的答案
最好只加载相关数据,因为这样可以节省内存和时间。在laravel中,您可以使用“选择”功能在查询中轻松实现这一点,例如
return UserResource::collection(User::select('id', 'name')->get());
// Resource file:
public function toArray($request)
{
return parent::toArray($request);
}
https://laravel.com/docs/7.x/queries#selects
如何在laravel eloquent中选择特定列
我们知道主存域很少:年轻的、终生的(旧的gen)和PermGen。 年轻领域分为伊甸园和幸存者(有两个)。 OldGen用于生存的对象。 MaxTenuringThreshold防止对象过早地被最终复制到OldGen空间。这很清楚,也很容易理解。 但是它是如何工作的呢?垃圾回收器如何处理这些在MaxTenuringThreshold之前仍然存在的对象,以何种方式?它们位于何处? 对象被复制回幸存者
我正在学习Spring核心认证,我对Spring如何处理bean生命周期有一些疑问,特别是bean后处理器。 所以我有了这个模式: 我很清楚这意味着什么: 然后在bean创建阶段执行以下步骤: > 每个bean都在缺省情况下被急切地实例化(按照正确的顺序创建,并注入其依赖项)。 在依赖注入之后,每个bean都会经历一个后处理阶段,在这个阶段中可能会进行进一步的配置和初始化。 > 初始化器:如果指示
其中有作为路径变量的{accountId}。例如,这个方法处理类似于“/accounts/123/conturnions”的URL,其中123值存储到一个名为accountId的变量中,然后我可以在代码中使用该变量,事实上,通过@PathVariable注释,我检索了这个值,并将其用作addDecurary()方法的输入参数。 @ResponseStatus(HttpStatus.Created)
这是一个简单的错误:我在对象的格式字符串中使用了而不是。但我完全困惑于我的测试结果与错误的格式字符串。 以下代码: @Jan建议依赖toString()方法可能会有问题,所以我定义了一个日期格式,以与上面相同的代码打印。下面是附加输出:
我几乎理解了尾递归是如何工作的,以及它与普通递归之间的区别。我只是不明白为什么它不要求堆栈记住它的返回地址。 在尾递归函数中调用函数本身后没有什么可做的,但对我来说这没有意义。
根据Javadoc关于字符串。实习生(): 调用intern方法时,如果池中已经包含一个由equals(Object)方法确定的等于此String对象的字符串,则返回池中的字符串。否则,将此String对象添加到池中并返回对此String对象的引用。 我对此没有什么问题。 当创建一个新的字符串对象(不是使用字符串文字,而是使用new()操作符)时,如: