gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:43:39 31 4
gpt4 key购买 nike

我正在尝试使用 Laravels ModelFactory 定义用于测试的用户模型的几个不同变体,如记录 here

$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 = 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 状态按预期工作。

关于php - Laravel 5.3 调用未定义的方法 Illuminate\Database\Eloquent\Factory::state(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40090052/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com