Ответ 1
На самом деле это довольно просто.
Создайте тестовую базу данных в своей папке 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 в качестве базы данных по умолчанию для тестов.
В корневой папке есть файл phpunit.xml
, откройте его и новую переменную в <php>
node:
<env name="DB_CONNECTION" value="sqlite"/>
Теперь ваше приложение использует MySQL, а phpunit использует SQLite.
Помните, что если вы измените .env
, чтобы изменить его на свою базу данных по умолчанию,
PS
Будьте внимательны при запуске ваших миграций, если вы указали соединение в самой миграции, оно попытается запустить его в этом соединении.
<?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
или в команде миграции