【问题标题】:laravel factory Illuminate/Database/QueryException with message 'SQLSTATE[HY000]:laravel factory Illuminate/Database/QueryException 并带有消息'SQLSTATE [HY000]:
【发布时间】:2019-05-21 12:52:26
【问题描述】:

问题在于 tinker 没有将内容包装在字符串中

使用消息'SQLSTATE[HY000] 照亮/数据库/查询异常: 一般错误:1364 字段 'address_line_2' 没有默认值 值(SQL:插入Testnamegendermobile_phonealternate_phone, status, address_line_1, updated_at, created_at) 价值观 (emitchell, dariana66@hotmail.com, Kendra Friesen, Ole Carter, Gennaro Hickle, Prof. Brandon Herman 博士, 2018-12-21 01:07:12, 2018-12-21 01:07:12))'

如果我手动将引号添加到每个值,例如

values ('emitchell', 'dariana66@hotmail.com', 'Kendra
Friesen', 'Ole Carter', 'Gennaro Hickle', 'Prof. Brandon Herman PhD',
'2018-12-21 01:07:12', '2018-12-21 01:07:12')

有效

如何让 tinker 在引号中生成随机内容?

我什至用(string)

$factory->define(App\Test::class, function (Faker $faker) {
    return [
       'name' => (string)$faker->sentence(),
       'gender' => (string)$faker->sentence(),
       'mobile_phone' => (string)$faker->sentence(),
       'alternate_phone' => (string)$faker->sentence(),
       'status' => (string)$faker->sentence(),
       'address_line_1' => (string)$faker->sentence(),
       'address_line_2' => (string)$faker->sentence(),
       'town_city' => (string)$faker->sentence(),
       'postscode' => (string)$faker->sentence(),
       'notes' => (string)$faker->sentence()
    ];

});

或来自 github 页面的示例

'name' => $faker-> sentence($nbWords = 6, $variableNbWords = true), // 'Sit vitae voluptas sint non voluptates.'

它不会输出字符串值...

发生了什么?

【问题讨论】:

  • 我没有使用faker或tinker。如果$faker->sentence() 为空,那么(string)$faker->sentence() 将为空。也许你可以让address_line_2 可以为空?
  • $faker->sentence() 不为空......只是没有引用它......我得到了这样的东西 lorem ipsum 没有引号它不会在 mysql 上工作......我手动添加了半列句子'lorem ipsum'它有效......这就是我添加(字符串)的原因

标签: laravel tinker


【解决方案1】:

你不需要指定数据类型,你只需要调用函数

'name' => $faker->sentence(),

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 2020-09-30
    • 2019-06-05
    • 2021-12-28
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多