cerbero / eloquent-inspector
检查 Laravel Eloquent 模型以收集属性、关系等信息。
1.0.0
2022-01-18 02:07 UTC
Requires
- php: ^8.0
- doctrine/dbal: ^3.0||^4.0
- illuminate/database: >=8.0
Requires (Dev)
- orchestra/testbench: >=6.0
- pestphp/pest: ^1.21
- scrutinizer/ocular: ^1.8
- squizlabs/php_codesniffer: ^3.0
This package is auto-updated.
Last update: 2024-09-18 08:17:08 UTC
README
检查 Laravel Eloquent 模型以收集属性、关系等信息。
安装
通过 Composer
composer require cerbero/eloquent-inspector
用法
要检查 Eloquent 模型,我们可以简单地将其类名传递给 inspect()
方法
use App\Models\User; use Cerbero\EloquentInspector\Inspector; $inspector = Inspector::inspect(User::class);
每次检查新模型时都会创建一个 Inspector
单例,这允许我们在运行检查逻辑一次的情况下多次检查相同的模型。
如果我们需要释放内存或清理一些检查的模型信息,我们可以刷新所有模型检查,刷新单个模型检查,或告诉检查忘记其数据
// flush information of all inspected models Inspector::flush(); // flush information of an inspected model Inspector::flush(User::class); // forget information of the current inspection Inspector::inspect(User::class)->forget();
要从 Inspector
获取检查的模型的类,我们可以调用 getModel()
$model = Inspector::inspect(User::class)->getModel(); // App\Models\User
方法 getUseStatements()
返回一个包含模型中所有 use
语句的数组,键是类名或别名
use Illuminate\Database\Eloquent\Model; use Foo\Bar as Baz; class User extends Model { // ... } $useStatements = Inspector::inspect(User::class)->getUseStatements(); /* [ 'Model' => 'Illuminate\Database\Eloquent\Model', 'Baz' => 'Foo\Bar', ] */
调用 getProperties()
对模型数据库表进行扫描,并返回一个包含属性信息的 Property
实例数组。数组键是属性名称
$properties = Inspector::inspect(User::class)->getProperties(); /* [ 'id' => <Cerbero\EloquentInspector\Dtos\Property>, 'name' => <Cerbero\EloquentInspector\Dtos\Property>, ... ] */ $properties['id']->name; // id $properties['id']->type; // int $properties['id']->dbType; // integer $properties['id']->nullable; // false $properties['id']->default; // null
要检查模型的关联关系,我们可以调用 getRelationships()
方法。结果是包含所有关联信息的 Relationship
实例数组,键是关联名称
$relationships = Inspector::inspect(User::class)->getRelationships(); /* [ 'posts' => <Cerbero\EloquentInspector\Dtos\Relationship>, 'tags' => <Cerbero\EloquentInspector\Dtos\Relationship>, ... ] */ $relationships['posts']->name; // posts $relationships['posts']->type; // hasMany $relationships['posts']->class; // Illuminate\Database\Eloquent\Relations\HasMany $relationships['posts']->model; // App\Models\Post $relationships['posts']->relatesToMany; // true
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
测试
composer test
贡献
请参阅 CONTRIBUTING 和 CODE_OF_CONDUCT 了解详细信息。
安全
如果您发现任何安全问题,请通过电子邮件 andrea.marco.sartori@gmail.com 报告,而不是使用问题跟踪器。
致谢
许可
MIT 许可证 (MIT)。请参阅 许可文件 了解更多信息。