我应该在哪里放置包含我在laravel项目层级文件夹中的数据库播种器中使用的记录的.sql文件

时间:2014-11-17 14:09:41

标签: php laravel orm eloquent

我有两个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);
    }

}

1 个答案:

答案 0 :(得分:0)

我认为你拥有的很好。我要说的只是使用file_get_contents('app/.....')而不是file_get_contents(__DIR__.'/cities.sql');,你应该找到一个更好的方式来引用目录。因为(我假设)sql文件在你的播种机旁边,你可以只使用file_get_contents(app_path('database/seeds/cities.sql'));等,或者使用.sql类似的东西。

那就是说,我尽量不使用SQL文件而是使用代码种子。除了没有这个困境之外,这样做的好处是你可以更加与数据库无关。例如,如果您将来切换到某个其他数据库驱动程序,而不使用与DB::insert()文件中完全相同的语法,那么您将遇到问题。但是如果你使用{{1}}语句,你会持续很长时间。

相关问题