使用种子

时间:2016-09-16 02:53:34

标签: laravel seed

我有数据库包含一些表..其中一个(thsises表)..我试图播种一些假数据..但当我运行     php artisan db:种子 它抛出一个SQL错误......这是我的工厂:

$factory->define(App\Thesise::class, function (Faker\Generator $faker) {

return [
    'program_id' =>$faker->numberBetween($min = 1, $max = 5),
    'ar_title' =>$faker->sentences,
    'en_title' =>$faker->sentences,
    'student_id' =>$faker->numberBetween($min = 3, $max = 20),
    'ar_brief' =>$faker->sentences,
    'en_brief' =>$faker->sentences,
    'ar_expalin' =>$faker->text,
    'en_explain' =>$faker->text,
    'date' =>$faker->date($format = '2000-01-01', $max = 'now'),
    'primary_siminar' =>$faker->date($format = '2000-01-01', $max = 'now'),
    'final_siminar' =>$faker->date($format = '2000-01-01', $max = 'now'),
    'test_date' =>$faker->date($format = '2000-01-01', $max = 'now'),
    'degree_date' =>$faker->date($format = '2000-01-01', $max = 'now'),
    'degree' =>$faker->randomFloat($nbMaxDecimals = 2, $min = 60, $max = 100), // 48.8932
    'degreey' =>$faker->sentences,
    'mat_avg' =>$faker->randomFloat($nbMaxDecimals = 2, $min = 60, $max = 100), // 48.8932
    'final_degree' =>$faker->randomFloat($nbMaxDecimals = 2, $min = 60, $max = 100), // 48.8932
    'f_ad' =>$faker->numberBetween($min = 1, $max = 10),
    'f_a' =>$faker->numberBetween($min = 1, $max = 10),
    'j_ad' =>$faker->numberBetween($min = 1, $max = 10),
    'j1' =>$faker->numberBetween($min = 1, $max = 10),
    'j2' =>$faker->numberBetween($min = 1, $max = 10),
    'file' =>$faker->sentences,
];

});

这是我的迁移表功能

   public function up()
{
    Schema::create('thesises', function(Blueprint $table) {
        $table->increments('id');
        $table->integer('program_id');
        $table->string('ar_title');
        $table->string('en_title');
        $table->integer('student_id')->unsigned();
        $table->text('ar_brief');
        $table->text('en_brief');
        $table->longText('ar_expalin');
        $table->longText('en_explain');
        $table->date('date');
        $table->date('primary_siminar');
        $table->date('final_siminar');
        $table->date('test_date');
        $table->date('degree_date');
        $table->double('degree');
        $table->string('degreey');
        $table->double('mat_avg');
        $table->double('final_degree');
        $table->integer('f_ad');
        $table->integer('f_a');
        $table->integer('j_ad');
        $table->integer('j1');
        $table->integer('j2');
        $table->string('file');
        $table->timestamps();
    });
}

ThesisesTabelSeeder这样:

class ThesisesTableSeeder extends Seeder
{
/**
 * Run the database seeds.
 *
 * @return void
 */
public function run()
{
    factory(\App\Thesise::class , 10)->create();
}

}

我将其称为:

class DatabaseSeeder extends Seeder
{
/**
 * Run the database seeds.
 *
 * @return void
 */
public function run()
{
     $this->call(ThesisesTableSeeder::class);
}

}

当我播种时..它会抛出错误异常(数组到字符串转换)......请帮助!!

1 个答案:

答案 0 :(得分:0)

根据Faker\Generator类,方法/属性sentences返回一个字符串数组。

  
      
  • @property string $ sentence
  •   
  • @method字符串句子($ nbWords = 6,$ variableNbWords = true)
  •   
  • @property string | array $ sentences
  •   
  • @method string |数组句子($ nb = 3,$ asText = false)
  •   

因此,您应该使用方法/属性sentence。例如:

$factory->define(App\Thesise::class, function (Faker\Generator $faker) {
    return [
        ...
        'ar_title' => $faker->sentence, // or.
        'en_title' => $faker->sentence(3, true),
        ...
    ];
}