【发布时间】:2017-03-20 23:29:35
【问题描述】:
在 laravel 5.3 中使用模型工厂创建表播种器时出现错误,但我不知道这里哪里出错了。
[错误异常] 传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须是数组类型,给定字符串,在 D:\Coding\php\laravel\simple-blog\vendor\laravel\framework\src\Illuminate\Database 中调用\Query\Grammars\Grammar.php 在第 660 行并已定义
这是我的代码:
型号:
<?php
namespace app;
use Illuminate\Database\Eloquent\Model;
class Article extends Model
{
protected $table = 'articles';
}
模型工厂:
$factory->define(app\Article::class, function (Faker\Generator $faker){
return [
'title' => $faker->sentences(5),
'content' => $faker->text(),
'created_at' => \Carbon\Carbon::now(),
'updated_at' => \Carbon\Carbon::now()
];
});
迁移:
public function up()
{
Schema::create('articles', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->text('content');
$table->timestamps();
});
}
ArticlesTableSeeder:
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use Faker\Factory as Faker;
use app\Article as Article;
class ArticlesTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
factory(Article::class)->create();
}
}
【问题讨论】:
-
从 laravel 5.3 开始,一切都返回一个集合而不是一个数组。这就是为什么你有这个错误。不是很熟悉 factory/faker ,所以不确定应该在哪里添加 ->get() 或 ->all() 但如果你在集合上这样做应该可以解决它。
标签: php laravel data-migration faker