繁体   English   中英

Laravel 5.3调用未定义的方法Illuminate \\ Database \\ Eloquent \\ Factory :: state()

[英]Laravel 5.3 Call to undefined method Illuminate\Database\Eloquent\Factory::state()

我试图定义一个用户模式测试的几个不同的版本,使用Laravels ModelFactory作为记录在这里

$factory->define(App\User::class, function(\Faker\Generator $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'remember_token' => str_random(10),
        'phone' => $faker->phoneNumber,
    ];
});

$factory->state(App\User::class, 'admin', function (Faker\Generator $faker) {
    return [
        'groups' => function(App\User $u) {
            return App\Models\Group::where('level', '<=', 5)->get()->toArray();
        }
    ];
});

然后我创建一个User模型:

$user = factory(User::class)->states('admin')->make();

但phpunit似乎没有抱怨就退出了测试。 在PHP日志中,我看到:

Call to undefined method Illuminate\Database\Eloquent\Factory::state()

Laravel文档中没有关于state()方法的文档,我已经搜索和实验了几个小时而没有任何进展来展示它。

作为旁注: groups属性指的是Many关系。 但是,无论我创建哪种模型,甚至是简单模型,都会抛出此异常。

在Illuminate \\ Database \\ Eloquent \\ Factory和FactoryBuilder类中挖掘之后,我发现与github上的最新Laravel分支相比,state()和states()方法都丢失了。 在运行composer update之后,它将我更新为Laravel Framework v5.3.18,现在ModelFactory状态按预期工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM