Как в миграции laravel заполнить колонку данными из другой таблицы?

В Laravel можно использовать методы миграций для заполнения колонок данными из других таблиц. Следующий пример показывает, как это можно сделать.

Предположим, у вас есть две таблицы: users и countries. Вам нужно заполнить колонку country_id в таблице users данными из колонки id в таблице countries. Вот шаги, которые нужно выполнить:

1. Создайте миграцию с помощью команды artisan php artisan make:migration update_users_table. Это создаст файл миграции в каталоге database/migrations.

2. Откройте созданный файл миграции и в методе up добавьте код, который заполняет колонку country_id данными из таблицы countries. Например:

use IlluminateSupportFacadesSchema;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;

class UpdateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->foreignId('country_id')->nullable();

            $table->foreign('country_id')->references('id')->on('countries');
        });

        $users = AppModelsUser::all();

        foreach ($users as $user) {
            $country = AppModelsCountry::first();

            $user->country_id = $country->id;
            $user->save();
        }
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dropForeign('users_country_id_foreign');
            $table->dropColumn('country_id');
        });
    }
}

Обратите внимание, что вместо AppModelsUser и AppModelsCountry вы должны использовать свои модели для доступа к таблицам.

3. Запустите миграцию с помощью команды php artisan migrate. Теперь в колонке country_id каждой записи в таблице users будет сохранено значение из колонки id таблицы countries.

4. Если вы хотите отменить эту миграцию и удалить созданную колонку, вы можете использовать команду php artisan migrate:rollback.

Вот и все! Теперь вы знаете, как заполнить колонку в миграции Laravel данными из другой таблицы.