2016-11-07 99 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