【问题标题】:How do you create a User instance in another factory in Laravel?如何在 Laravel 的另一个工厂中创建用户实例?
【发布时间】:2018-02-12 07:15:39
【问题描述】:

我正在尝试使用 Laravel 5.5 中的工厂创建一些测试数据。我正在运行这个

factory('App\Thread', 3)->create();

我收到错误消息列 'user_id' 不能为空

Column 'user_id' cannot be null (SQL: insert into thread
s` (user_id, title, body, updated_at, created_at) values (, Quia modi
aperiam eos aut., Sed voluptate ut quia ut. Et accusamus eaque est amet. Veniam
consectetur exercitationem id facere., 2017-09-04 04:38:11, 2017-09-04 04:38:11)
)'

我的线程工厂创建了一个新的实例用户,但它似乎没有返回值。

use Faker\Generator as Faker;

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

return [
    'user_id' => function () {
                return factory('App\User')->make()->id;
    },
    'title' => $faker->sentence,
    'body' => $faker->paragraph,
];
});

我根本没有修改用户工厂。我从documentation 复制并粘贴,无法获取。任何帮助将不胜感激我是新手,我相信这很简单。

【问题讨论】:

  • 你应该在线程工厂中使用 ->create() 而不是 ->make()
  • 有什么区别?无论哪种方式,我都看到三个用户添加到数据库中。我认为 make 不会保存它们。

标签: php laravel phpunit factories


【解决方案1】:

我在打字

factory(App\Thread::class, 3)->create();

而不是

factory('App\Thread', 3)->create();

我不知道它们是不同的。

【讨论】:

    猜你喜欢
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    • 2019-01-26
    • 2020-10-16
    相关资源
    最近更新 更多