我应该在哪里放置包含我在laravel项目层级文件夹中的数据库播种器中使用的记录的.sql文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我应该在哪里放置包含我在laravel项目层级文件夹中的数据库播种器中使用的记录的.sql文件相关的知识,希望对你有一定的参考价值。
我有两个sql文件,即Cities.sql和States.sql,我使用数据库播种器来填充数据库中的数据。以下是Seeders的代码:
城市表
class CitiesTableSeeder extends Seeder
{
public function run()
{
DB::table('cities')->delete();
$sql = file_get_contents('app/database/seeds/cities.sql');
DB::statement($sql);
}
}
州表
class StatesTableSeeder extends Seeder
{
//put your code here
public function run()
{
DB::table('states')->delete();
$sql = file_get_contents('app/database/seeds/states.sql');
DB::statement($sql);
}
}
答案
我觉得你有什么好。我要说的不是使用file_get_contents('app/.....')
,你应该找到一个更好的方式来引用该目录。因为(我假设)sql文件与你的播种机一起,你可以使用file_get_contents(__DIR__.'/cities.sql');
等,或者使用file_get_contents(app_path('database/seeds/cities.sql'));
有点东西。
也就是说,我尽量不使用SQL文件而是使用代码种子。除了没有这个困境之外,这样做的好处是你可以更加与数据库无关。例如,如果您将来切换到某个其他数据库驱动程序,而不使用与.sql
文件中完全相同的语法,那么您将遇到问题。但是如果你使用DB::insert()
语句,你会持续更长时间。
以上是关于我应该在哪里放置包含我在laravel项目层级文件夹中的数据库播种器中使用的记录的.sql文件的主要内容,如果未能解决你的问题,请参考以下文章