在L4的新种子功能中,有没有一种简单的方法来管理多对多关系?
一种方法是为pivot表制作种子,但我需要做很多工作.
有没有关于这类事情的好工作流程的 idea ?
在L4的新种子功能中,有没有一种简单的方法来管理多对多关系?
一种方法是为pivot表制作种子,但我需要做很多工作.
有没有关于这类事情的好工作流程的 idea ?
在最新版本的Laravel 4中,您定义了所有种子程序脚本在DatabaseSeeder类的"run"方法中运行的顺序.
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函数 for each 表重新设置id计数的唯一方法.如果你遵循inserting related models的指南,这种做法可能是不必要的.
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,就像我在我的示例中所做的,以及最新版本的文档所做的那样,您需要为模型指定一些受保护的或可填充的列.要做到这一点,只需将属性添加到模型中,如下所示:
class Primaryone extends Eloquent {
protected $guarded = array('id');