【问题标题】:Generate Factory in Laravel 5.5在 Laravel 5.5 中生成工厂
【发布时间】:2018-04-21 23:58:23
【问题描述】:

我在命令下运行

php artisan make:factory AddressFactory

我得到低于结果

$factory->define(Model::class, function (Faker $faker) {

但我想得到如下结果

$factory->define(App\Address::class, function (Faker $faker) {

我该怎么办?

【问题讨论】:

标签: php laravel laravel-5 factory laravel-5.5


【解决方案1】:

如果您希望 ma​​ke:factory 命令为现有模型生成工厂类,则需要通过 --model 选项告诉它要使用哪个模型:

php artisan make:factory AddressFactory --model="App\\Address"

【讨论】:

  • 我认为我们应该使用“\”而不是“\\”
  • @PhanVanLinh 如果要将其传递给 PHP 命令,则需要在 bash 命令行中转义“\”,因此使用“\\”
【解决方案2】:

对于 Laravel 8

使用 artisan 命令,您不再需要指定模型。通过在模型中自动包含工厂特征,Laravel 自动使工厂方法可用于相应的模型。

只有这样:

php artisan make:factory AddressFactory

然后在播种器或测试中调用模型就足够了。

例如:

App\Models\Address::factory(10)->create();

模型和工厂发现约定

一旦你定义了你的工厂,你就可以使用静态工厂了 提供给您的模型的方法 Illuminate\Database\Eloquent\Factories\HasFactory 特征,以便 为该模型实例化一个工厂实例。

HasFactory trait 的工厂方法将使用约定来 为特征分配给的模型确定合适的工厂。 具体来说,该方法将在 具有与模型匹配的类名的 Database\Factories 命名空间 名称并以 Factory 为后缀。如果这些约定不适用 到您的特定应用程序或工厂,您可以覆盖 模型上的 newFactory 方法以返回模型的实例 直接对应工厂:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-28
    • 2016-07-03
    • 2019-04-04
    • 2018-02-13
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 2020-11-20
    相关资源
    最近更新 更多