我有两个sql文件,即Cities.sql和State.sql我正在使用数据库播种器在数据库中填充我的数据。以下是播种机的代码:
城市表
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()
语句,你会持续更长的时间。