对于一个新的Laravel项目,我需要使用一个现有的MySQL数据库(176个表)。我不想为每个现有表创建Laravel迁移,因此我已经将数据库结构导出到sql文件。
在迁移中,我想执行SQL文件,如下所示:
public function up()
{
DB::unprepared(file_get_contents('/path/to/file.sql'));
}
unprepared
返回true
,但似乎导入导入不会(完全)执行。没有错误,没有影响(有时,创建了1或2个表,例如在执行sql文件之前删除并重新创建数据库之后)。
当我使用mysql source /path/to/file.sql
执行此文件时,导入工作正常(将报告版本差异引起的一些错误,但继续执行)。
我的问题:出于测试目的,我想在迁移过程中从SQL文件创建176 old/existing tables
。在迁移过程中,我需要更改一些表。
我不想为每个表创建迁移。
答案 0 :(得分:0)
您可以按照以下步骤对所有表进行反向迁移:-
1)编写者需要--dev“ xethron / migrations-generator”
2)在bootstrap / app-$ app-> register(\ Way \ Generators \ GeneratorsServiceProvider :: class)中; $ app-> register(\ Xethron \ MigrationsGenerator \ MigrationsGeneratorServiceProvider :: class);
3)在bootstrap / app.php中添加
class Application extends Laravel\Lumen\Application
{
/**
* Get the path to the application configuration files.
*
* @param string $path Optionally, a path to append to the config path
* @return string
*/
public function configPath($path = '')
{
return $this->basePath.DIRECTORY_SEPARATOR.'config'.($path ? DIRECTORY_SEPARATOR.$path : $path);
}
}
if (!function_exists('config_path')) {
/**
* Get the configuration path.
*
* @param string $path
* @return string
*/
function config_path($path = '')
{
return app()->basePath() . '/config' . ($path ? '/' . $path : $path);
}
}
if (!function_exists('app_path')) {
/**
* Get the path to the application folder.
*
* @param string $path
* @return string
*/
function app_path($path = '')
{
return app('path') . ($path ? DIRECTORY_SEPARATOR . $path : $path);
}
}
class_alias('Illuminate\Support\Facades\Config', 'Config');
$app = new Application(
realpath(__DIR__.'/../')
);
4)写php artisan migration:在终端中生成
5)更改
$app = new Application(
realpath(__DIR__.'/../')
);
到
$app = new Laravel\Lumen\Application(
realpath(__DIR__.'/../')
);
在bootstrap / app.php中