解决方法
在最新版本的Laravel 4中,您可以定义所有播种器脚本在
DatabaseSeeder类的“run”方法中运行的顺序.
@H_404_10@public function run()
{
DB::statement('SET FOREIGN_KEY_CHECKS=0;');
$this->call('PrimaryTableOneSeeder');
$this->command->info('The first primary table has been seeded!');
$this->call('PrimaryTableTwoSeeder');
$this->command->info('The second primary table has been seeded!');
$this->call('PivotTableSeeder');
$this->command->info('The pivot table has been seeded!');
DB::statement('SET FOREIGN_KEY_CHECKS=1;');
}
你会发现我在运行所有播种之前和之后禁用外键约束.这可能是不好的做法,但这是我可以使用truncate函数重新设置每个表的id计数的唯一方法.如果您遵循inserting related models的指南,这种做法可能是不必要的.
@H_404_10@class PrimaryTableOneSeeder extends Seeder { public function run() { DB::table('primaryone')->truncate(); Primaryone::create(array( 'field' => 'value','created_at' => new DateTime,'updated_at' => new DateTime )); }要在我的示例中使用mass assignment,并且作为最新版本的文档,您需要为模型指定一些保护的或可填充的列.为此,只需将属性添加到您的模型中,如下所示:
@H_404_10@class Primaryone extends Eloquent { protected $guarded = array('id');