2016-11-07 38 views
0

在laravel 5.3中使用模型工厂创建表播种器时出现错误,但我不知道我要在哪里出错。Laravel:运行时出错Seeder

[ErrorException] 传递给Illuminate \ Database \ Grammar :: parameterize()的参数1必须是在D:\ Coding \ php \ laravel \ simple-blog \ vendor \ laravel中调用的数组,字符串类型\框架的\ src \照亮\数据库\查询\语法\ 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(); 
    } 
} 
+0

由于laravel 5.3一切都返回一个集合,而不是一个数组。这就是为什么你有这个错误。如果你在一个集合上这样做,不太了解factory/faker,所以不知道你应该在哪里添加 - > get()或 - > all(),但应该解决它。 – Christophvh

回答

2

'title' => $faker->sentences(5),产生阵列5倍的值。在返回之前先创建var,然后concat这些句子。

sentences(5, true);会为您生成5个句子文本。

+0

非常感谢你。我把它改成了句子(5,真),现在就起作用了 – Tri