我应该在哪里放置包含我在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文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 5 中的哪里放置特征?

我在哪里把我的自定义类和函数放在 Laravel 中

我在哪里放置与我的项目相关的 conda-recipe?

我在哪里放置 C++ 自定义异常代码?

我在哪里把自定义代码放在 Laravel

在 MVC 中,我在哪里放置数据库查询?