我的应用程序需要预先注册的数据集才能工作。所以我需要在设置应用程序时将它们插入到数据库中。Laravel:迁移和播种生产数据
Laravel提出了两种机制:
- Database migrations:“他们让一个团队来修改数据库模式,并保持最新的当前模式的状态。”
- Database seeding:“Laravel还提供了一种简单的方法,使用种子类为测试数据创建数据库。”
当我阅读本说明时,这些解决方案似乎都没有适应。
一个类似的问题是asked on stackoverflow和answered。答案提出通过检测当前环境中使用的数据库播种机来填充数据库:
<?php
class DatabaseSeeder extends Seeder {
public function run()
{
Eloquent::unguard();
if (App::environment() === 'production')
{
$this->call('ProductionSeeder');
}
else
{
$this->call('StagingSeeder');
}
}
}
当然,这种解决方案的工作。但我不确定这是否是正确的方法,因为通过使用播种器插入数据,您将失去迁移机制提供的所有优点(数据库提高,回滚...)
我想知道在这种情况下是最佳做法。
在Laravel中,迁移是关于模式管理,而不是数据管理。播种机被用来提供测试数据,但我认为他们的意图不是生产数据加载机制。 – warspite
@尽管是这是文档说的。这就是为什么我问这个问题。 – gontard
也许这个软件包会有帮助https://github.com/slampenny/SmartSeeder –