cviebrock/eloquent-log-lazy-loading

此包已废弃,不再维护。没有建议的替代包。

记录(或禁用)Eloquent懒加载关系。

1.0.0 2017-10-13 19:35 UTC

This package is auto-updated.

Last update: 2024-06-19 18:56:17 UTC


README

Eloquent Log Lazy Loading

警告

由于该包自Laravel 5以来未更新,并且功能已通过Model::handleLazyLoadingViolationUsing 方法集成到Laravel的最新版本中,因此已废弃。

在Laravel 5中记录(或禁用)Eloquent懒加载关系,以加快您的应用程序。

Build Status Latest Stable Version Latest Unstable Version Scrutinizer Code Quality Total Downloads License

您可能需要此包的原因

Eloquent的懒加载很棒。您可以在控制器中使用 Group::find($id),然后在模板中遍历 $group->users,而无需担心底层的数据库查询。

问题在于当您尝试遍历 $group->users->addresses 或其他关系时。您可能无意中为循环的每个迭代运行一个SQL查询。如果您运行的网站每天有数百万的访问量,这可能不是一件好事!

通过记录脚本中懒加载关系的位置,您可能能够优化应用程序以避免不必要的数据库调用。至少您可以看到瓶颈在哪里。如果您愿意,您还可以完全禁用懒加载,仅允许显式加载的关系被访问。

安装

通过composer安装此包

$ composer require cviebrock/eloquent-log-lazy-loading

这就完成了!

使用

您的模型应使用 LogLazyLoading 特性

use Cviebrock\EloquentLogLazyLoading\LogLazyLoading;

class MyModel extends Eloquent
{
    use LogLazyLoading;
}

当您尝试懒加载一个关系时,此包将报告一个 LazyLoadingException 异常并继续正常(即它将加载该关系)。这是一种检查应用程序在哪里进行懒加载的绝佳方式,并允许您重构,可能减少调用的数据库查询数量。

但是,如果您真的想当心并在关系懒加载时停止应用程序,则只需将模型的 disableLazyLoading 属性设置为 true。将抛出异常,而不仅仅是报告。

use Cviebrock\EloquentLogLazyLoading\LogLazyLoading;

class MyModel extends Eloquent
{
    use LogLazyLoading;
    
    protected $disableLazyLoading = true;
}

错误、建议和贡献

感谢所有为该项目做出贡献的人。

请使用Github 报告错误,发表评论或建议。

有关如何贡献更改的信息,请参阅CONTRIBUTING.md

版权和许可证

eloquent-taggableColin Viebrock 编写,并发布在MIT许可证下。

版权(c)2017 Colin Viebrock