laravel中db表的默认内容

mrzz3bfm  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(275)

我在学拉威尔,有个问题我自己也不太明白。例如,我有db表,比如 cities 或者 car_models 他们的迁徙。但我不想每次手动填充这些表migrate:refresh or 在测试/生产服务器上部署项目,因此它们必须具有一些默认内容。
在迁移过程中填充它们可以吗?或者这就是播种机的用途(据我所知,它们是用来在表中填充一些假数据以满足测试需要的)

qqrboqgw

qqrboqgw1#

两个答案都是正确的。但他们遗漏了一些重要的东西。
在我看来,使用seeder类最重要的价值在于将迁移与总体逻辑解耦。
为什么这很重要?你有很多答案:
代码质量。
支持几个坚实的原则。
良好做法。
更好地理解你的代码。
清洁剂api。
但对我来说,最重要的一点是,这可以让你对不同的porpus使用相同的代码得到不同的结果。这是一个例子:
在迁移文件中编写种子/填充逻辑。如果你想把你的应用部署到一个 production 环境?那么,您需要修改迁移以避免包含伪数据的功能,然后提交这些更改并将其上载到服务器。如果您需要在不同的环境中部署它( staging 例如)您需要再次更改。
相反,如果创建特定的类来填充数据库(种子),则可以灵活地使用相同的代码,并使用命令标志将它们包含(或相反):

// The following won't include your seeders
php artisan migrate

// This will include your seeder classes
php artisan migrate --seed

您可以更细粒度地指定特定的播种机:

php artisan migrate
php artisan db:seed --class=UsersTableSeeder

当您希望在环境中只填充几个表(如 roles , types , cities 以此类推)而不是运行所有的播种机( users , orders , reservations , ...).
我希望这有帮助。

0s0u357o

0s0u357o2#

迁移用于创建表,而seeder用于将虚拟数据插入数据库中的表。您可以在迁移中填充它们,但这不是一个好的做法,可能会导致混淆。

相关问题