【问题标题】:Laravel 5.1 factory definition unable to resolve closure for foreign relationshipsLaravel 5.1 工厂定义无法解决对外关系的关闭
【发布时间】:2018-09-08 14:36:08
【问题描述】:

我在定义工厂函数来处理我的业务模型的对外关系时遇到了麻烦。这是我的商业模式工厂的代码。我收到的错误消息是:

带有消息“类对象”的未捕获异常“ErrorException” 闭包无法转换为字符串' /Users/patricia/​​Code/thank-views/vendor/laravel/framework/src/Illuminate/Database/Connection.php:390 堆栈跟踪

似乎无法解析用户的id。当我在修补程序中运行它时,它会为这些字段创建带有闭包函数的模型。但是,我希望能够生成这些模型以用于我的 BusinessTest 类。它无法解决这些依赖关系。我不确定解决这些依赖关系的最佳位置是否应该在 ModelFactory 或代码库的其他地方。

$factory->define(App\Business::class, function (Faker\Generator $faker) {
return [
    'slug' => $faker->word,
    'name' => $faker->name,
    'end_card' => $faker->word,
    'white_label' => $faker->boolean,
    'white_label_url' => $faker->word,
    'payment_header' => $faker->word,
    'payment_amount' => $faker->randomNumber(),
    'payment_amount_display' => $faker->word,
    'payment_cost' => $faker->randomNumber(),
    'payment_activated' => $faker->boolean,
    'main_user_id' => function () {
         return factory(App\User::class)->create()->id;
    },
];});

【问题讨论】:

  • 我没有发现您的代码有任何问题...尝试将工厂调用更改为:factory('App\User')->create()->id

标签: php laravel laravel-5 phpunit factory


【解决方案1】:

你可以改成:

 'main_user_id' => $factory->create(\App\User::class)->id

或:

'main_user_id' => $faker->unique()->numberBetween($min = 1, $max = 50)

或:

 'main_user_id' => $faker->unique()->randomDigit

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 2015-11-13
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 2019-06-23
    相关资源
    最近更新 更多