实际上,这很简单。
在文件夹上创建一个测试数据库,使用该名称,或者如果您想要另一个名称或其他位置,则必须更改文件上的配置,这些是默认配置:storage/
database.sqlite
config/database.php
'sqlite' => [
'driver' => 'sqlite',
'database' => storage_path('database.sqlite'),
'prefix' => '',
],
您有两种选择,要么编辑您的,要么只指定要在其中运行迁移的数据库的名称:.env
php artisan migrate --database=sqlite
如果您更喜欢编辑文件,那么我们必须添加一个新变量:.env
DB_CONNECTION=sqlite
这是因为当文件中缺少此变量时,Laravel默认为MySQL:.env
//config/database.php file
'default' => env('DB_CONNECTION', 'mysql'),
现在,我们的应用指向我们的 sqlite 数据库,现在我们可以运行迁移和种子设定。之后,如果您只想继续运行MySQL,请从文件中删除。DB_CONNECTION=sqlite
.env
现在,您已经在测试数据库上进行了迁移,最后一步只是指定 SQLite 作为测试的默认数据库。
在根文件夹上有一个文件,打开它,然后在 node 下有一个新变量:phpunit.xml
<php>
<env name="DB_CONNECTION" value="sqlite"/>
现在你的应用程序正在使用MySQL,phpunit正在使用SQLite。
请记住,如果您更改以将其更改回默认数据库;.env
附言
运行迁移时要小心,如果在迁移本身上指定了连接,它将尝试在该连接上运行它。
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AdminUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::connection('manage')->create('admin_users', function (Blueprint $t) {
$t->increments('id');
$t->string('name');
$t->softDeletes();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::connection('manage')->dropIfExists('admin_users');
}
}
此迁移将始终在连接管理器上运行,无论您在文件上或在迁移命令中指定了什么.env