我应该将包含我在数据库播种机中使用的记录的.sql文件放在 laravel 项目层次结构文件夹中的位置


Where should I place my .sql files containing records that I am using in my Database Seeders in laravel project hierarchy folder

我有两个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()语句,你会持续更长的时间。