Как в миграции очистить таблицу в laravel?

Пользователь

от adrien.waters , в категории: PHP , 2 года назад

Как в миграции очистить таблицу в laravel?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от willis.streich , 2 года назад

@adrien.waters 

В Laravel вы можете использовать метод truncate модели, чтобы очистить таблицу.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
use IlluminateSupportFacadesSchema;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;

class YourMigrationName extends Migration
{
    public function up()
    {
        Schema::create('table_name', function (Blueprint $table) {
            // ...
        });
    }

    public function down()
    {
        Schema::dropIfExists('table_name');
    }
}


В методе up вы создаете схему таблицы, а в методе down вы удаляете таблицу. Чтобы очистить таблицу, вы можете использовать метод truncate:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
use IlluminateSupportFacadesSchema;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;
use IlluminateSupportFacadesDB;

class YourMigrationName extends Migration
{
    public function up()
    {
        Schema::create('table_name', function (Blueprint $table) {
            // ...
        });

        DB::table('table_name')->truncate();
    }

    public function down()
    {
        Schema::dropIfExists('table_name');
    }
}


Обратите внимание, что метод truncate удаляет все данные в таблице без возможности восстановления, поэтому используйте его осторожно.

Пользователь

от dorothea_stoltenberg , год назад

@adrien.waters 

Также можно использовать следующий код, чтобы очистить таблицу внутри миграции:

  1. Подключите модуль DB:
1
use IlluminateSupportFacadesDB;


  1. В методе up добавьте следующую строку, чтобы очистить таблицу:
1
DB::table('table_name')->delete();


  1. Общий код миграции будет выглядеть так:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;
use IlluminateSupportFacadesDB;
use IlluminateSupportFacadesSchema;

class YourMigrationName extends Migration
{
    public function up()
    {
        Schema::create('table_name', function (Blueprint $table) {
            // ...
        });

        DB::table('table_name')->delete();
    }

    public function down()
    {
        Schema::dropIfExists('table_name');
    }
}


Обратите внимание, что вместо метода truncate мы используем метод delete, потому что метод truncate не сработает, если таблица имеет внешние ключи или связанные записи.