And*_*erg 14 database many-to-many laravel laravel-4
有没有一种简单的方法来管理L4的新种子功能中的多对多关系?
一种方法是为枢轴表制作种子,但我会做很多工作.
关于这种事情的良好工作流程的任何想法?
Bea*_*eau 41
在最新版本的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;');
}
Run Code Online (Sandbox Code Playgroud)
您会注意到我在运行所有种子之前和之后禁用了外键约束.这可能是不好的做法,但这是我可以使用truncate函数重新设置每个表的id计数的唯一方法.如果您按照插入相关模型的指南进行操作,则可能不需要这种做法.
class PrimaryTableOneSeeder extends Seeder {
public function run()
{
DB::table('primaryone')->truncate();
Primaryone::create(array(
'field' => 'value',
'created_at' => new DateTime,
'updated_at' => new DateTime
));
}
Run Code Online (Sandbox Code Playgroud)
要像我在我的示例中那样使用批量分配,并且作为文档的最新版本,您需要为模型指定一些保护列或可填充列.要做到这一点,只需向您的模型添加属性,如下所示:
class Primaryone extends Eloquent {
protected $guarded = array('id');
Run Code Online (Sandbox Code Playgroud)