cviebrock / eloquent-log-lazy-loading
记录(或禁用)Eloquent懒加载关系。
Requires
- php: ^7.0
- laravel/framework: ~5.5.0
Requires (Dev)
- mockery/mockery: ^0.9.4
- orchestra/database: ~3.5.0
- orchestra/testbench: ~3.5.0
- phpunit/phpunit: ^6.2
- scrutinizer/ocular: ^1.3
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懒加载关系,以加快您的应用程序。
您可能需要此包的原因
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-taggable 由Colin Viebrock 编写,并发布在MIT许可证下。
版权(c)2017 Colin Viebrock