Laravel 5.2中的工厂未按预期工作

3
我有一个与Laravel 5.2工厂相关的非常奇怪的问题。
我最近从Laravel 5.1升级到5.2,按照Laravel网站上的升级指南进行了操作。除了一个工厂以外,其他都正常工作。以下是两个工厂的示例:
$factory->define(App\Client::class, function (Faker\Generator $faker) {
    return [
        'name'              => $faker->company,
        'building'          => $faker->buildingNumber,
        'street'            => $faker->streetName,
        'town'              => $faker->city,
        'postcode'          => $faker->postcode,
        'country'           => 'UK',
        'telephone'         => $faker->phoneNumber,
        'fax'               => $faker->phoneNumber,
    ];
});

$factory->define(App\Shift::class, function (Faker\Generator $faker) {
    return [
        'client_id'         => $faker->numberBetween($min = 1, $max = 15),
        'user_id'           => $faker->numberBetween($min = 1, $max = 15),
        'start'             => $faker->dateTimeBetween($startDate='now', $endDate='+60 days'),
        'public'            => $faker->boolean(),
    ];
});

顶级工厂没问题,但第二个工厂完全无法运行,因为我的数据库种子(seed)抛出了一个错误,因为它没有填充客户端ID,而这是一个外键。

这两个模型之间唯一的区别是客户端模型不使用时间戳,而 Shift 模型则使用。除此之外,它们是相同的。

我会继续努力,但任何帮助来解决这个问题都将不胜感激。


我想我可能已经解决了这个问题。看起来,如果模型有一个空的构造函数,工厂就不会运行。还有其他人遇到过这个问题吗?我的模型在最终部署时需要一个构造函数,所以我稍后必须添加它。 - Gavin
你不应该在Eloquent模型中覆盖构造函数。而且,如果你能够实际上贴出你收到的错误信息,那么对于其他人来说更容易诊断问题。错误信息存在的目的是告诉你发生了什么错误,而不是被忽视。 - Martin Bean
1个回答

3
当你添加自己的构造函数时,你是否确保在其中调用 parent::__construct() 呢?

我没有在做这个。谢谢你解决了我的问题。我可以问一下这个传递给构造函数的是什么吗? - Gavin
@Gavin 抱歉我不知道确切的原因,但它是必需的。如果你知道原因,请告诉我。 - Viral Solani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接