Laravel 什么是使用 HasFactory?

Unk*_*Kid 12 php database model laravel eloquent

我在 Laravel 中创建了一个模型。我总是注意到默认情况下会使用 HasFactory。我可以知道它到底有什么作用吗?根据我阅读文档的理解,它是用于链接到数据库(我猜?)但我仍然不明白它到底是如何工作的。

the*_*per 15

HasFactory是不链接数据库的。它是将 Eloquent 模型链接到模型工厂的特征。

当需要特定模型的测试数据时,工厂通常用于测试。

您可以在此处阅读有关 Laravel 中工厂的更多信息:https: //laravel.com/docs/9.x/database-testing#model-factories和此处: https: //laravel.com/docs/9.x/eloquent-工厂

该特征确保您可以像这样实例化工厂:

User::factory()->create();
Run Code Online (Sandbox Code Playgroud)

在旧版本的 Laravel 中,没有使用该特征,而是必须由全局工厂助手实例化工厂,如下所示, factory(User::class)->create();但这导致 IDE 中的智能感知出现很多问题。