为什么Laravel Eloquent生成没有引号的SQL?

时间:2017-05-31 00:01:03

标签: php laravel laravel-5 eloquent

我正在尝试在Laravel安装上运行sudo php artisan migrate db:seed并收到以下错误:

  [Illuminate\Database\QueryException]                                                                                                          
  Array to string conversion (SQL: insert into `sponsor_phones` (`phone_number`, `type`, `is_primary`, `sponsor_id`, `updated_at`, `created_at  
  `) values (247-216-6255 x4356, Home, 1, 101, 2017-05-30 23:31:59, 2017-05-30 23:31:59))                           

似乎SQL Eloquent正在为播种创建缺少引号的地方。在正确的位置(下方)添加引号可以运行它。

insert into 
`sponsor_phones` 
(`phone_number`,
 `type`, 
 `is_primary`, 
 `sponsor_id`, 
 `updated_at`, 
 `created_at`
 ) 
  values 
  (
  '(732) 540-9730', 
  'Busi', 
  0,
  51, 
  '2017-05-27 21:53:44', 
  '2017-05-27 21:53:44');

我不确定导致此错误的原因,并且搜索Eloquent未添加引号的原因似乎未能产生任何有用的结果。

我有一个repository,所以你可以看看(因为作为一个开源项目,它还需要一个。)

1 个答案:

答案 0 :(得分:1)

问题不在于引文。在您的ModelFactory.php中,在函数getTypePhonegetTypeEmailgetTypeAddress中,您将返回

return $faker->randomElements(array('Work', 'Cell', 'Home', "VoIP"));

$faker->randomElements返回一个数组。相反,使用$faker->randomElement从数组中返回单个元素。

return $faker->randomElement(array('Work', 'Cell', 'Home', "VoIP"));