Laravel & MongoDB: Невозможно удалить существующую коллекцию с помощью migrate: fresh - PullRequest
0 голосов
/ 05 ноября 2018

Я не могу удалить коллекции MongoDB с помощью команды migrate: fresh. Проект на Laravel 5.7 и мы используем jenssegers/laravel-mongodb. Когда я пытаюсь запустить миграцию: fresh появляется сообщение об ошибке

MongoDB \ Driver \ Exception \ CommandException: коллекция 'project.drivers' уже существует

Если я вручную удаляю коллекции и запускаю миграцию: заново, коллекции создаются снова. Это сбивает с толку, как будто коллекция может быть создана с использованием Schema::connection('mongodb')->create('drivers', ...

Я не уверен, почему коллекция не удаляется при запуске Schema::connection('mongodb')->drop('drivers');

Ниже приведен один из моих файлов миграции, который выдает ошибку.

use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\Schema;
use Jenssegers\Mongodb\Schema\Blueprint;

class CreateDriversTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::connection('mongodb')->create('drivers', function (Blueprint $collection) {
            $collection->string('first_name');
            $collection->string('last_name');
            $collection->string('id_number');
            $collection->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::connection('mongodb')->drop('drivers');
    }
}

MySQL является основным подключением к базе данных. И мой файл .env выглядит так

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=project

DB_CONNECTION_MONGO=mongodb
DB_HOST_MONGO=127.0.0.1
DB_PORT_MONGO=27017
DB_DATABASE_MONGO=project

Пожалуйста, дайте мне знать, если мне нужно предоставить дополнительную информацию или примеры кода. Я пытался использовать то, что говорится в документации, но выдается та же ошибка. Я новичок в использовании MongoDB с Laravel, искал в Интернете и не нашел решений, которые работают.

UPDATE

Я только что переместил функцию Schema::connection('mongodb')->drop('drivers'); прямо над базой данных Schema::connection('mongodb')->create('drivers', ... в up (), и коллекция сбрасывается. Похоже, что функция down () игнорируется.

ОБНОВЛЕНИЕ 08/11/2018

Я пытался использовать функцию dropIfExists('drivers'), но коллекция по-прежнему не удаляется.

...