找不到四位数的年份 数据丢失
Posted
技术标签:
【中文标题】找不到四位数的年份 数据丢失【英文标题】:A four digit year could not be found Data missing 【发布时间】:2016-04-30 04:22:26 【问题描述】:我正在尝试使用 Laravel 5.2 中的工厂进行播种
我的代码在用户工厂中死掉了:
$factory->define(App\User::class, function (Faker\Generator $faker)
$countries = Countries::all()->pluck('id')->toArray();
return [
'name' => $faker->name,
'email' => $faker->email,
'password' => bcrypt(str_random(10)),
'grade_id' => $faker->numberBetween(1, 5),
'country_id' => $faker->randomElement($countries),
'city' => $faker->city,
'latitude' => $faker->latitude,
'longitude' => $faker->longitude,
'role_id' => $faker->numberBetween(1, 3),
'verified' => true,
'remember_token' => str_random(10),
'provider' => '',
'provider_id' => str_random(5)
];
);
给我这个错误:
A four digit year could not be found Data missing
我找到了原因,但不知道如何解决。
当我打电话给工厂时,我是这样称呼它的:
factory(User::class)->create(['role_id',2]);
如果我这样称呼它:
factory(User::class)->create();
我没有更多的错误。 但我真的需要培养不同类型的用户......
有什么想法???
【问题讨论】:
您是否尝试过在创建时使用键值数组,例如:factory(User::class)->create(['role_id' => 2]);
天哪,太愚蠢了!请把它作为答案!
我也有同样的问题,我花了大约 2 分钟才注意到 create
的数组参数中的 =>
而不是 ,
。
你让我开心@anpel
谢谢。我犯了同样的错字。这是一个可怕的错误信息,不是吗?根本没有描述实际问题。
【参考方案1】:
你有没有试过在create
方法中使用键值数组:
factory(User::class)->create(['role_id' => 2]);
【讨论】:
谢谢你。我完全忘了这是Associative Array
我每次在模型工厂中使用碳并试图在创建方法中覆盖工厂属性时都会遇到这个问题哈哈。这篇文章每次都绝对有帮助。【参考方案2】:
我可能迟到了,我遇到了同样的问题,结果证明是因为我提供了一个键,但返回的数组中没有值。
摆脱'provider' => ''
。
至于问题的原因我真的不知道,但它与碳有关
【讨论】:
对我来说,这是通过protected $dateFormat = 'Y-m-d H:i:sO';
提供的日期格式,由于迁移失败,它与列的格式不匹配。 carbon 不喜欢这样并抛出“数据丢失”错误。【参考方案3】:
我在使用批量赋值时遇到了同样的问题,结果我忘记将我的输入数组包装在请求帮助函数中
那是我有的 模型::create([表单输入]);
而不是 模型::create(request([表单输入]);
以防有人遇到它。
【讨论】:
【参考方案4】:我最近遇到同样的问题,最近发现唯一的问题是我给timestamp列类型放了一个无效值。
就我而言,我有列email_verified_at [timestamp]
。我想念我放了一个像company@example.com
这样的字符串而不是日期值,它应该是now()
。
【讨论】:
以上是关于找不到四位数的年份 数据丢失的主要内容,如果未能解决你的问题,请参考以下文章