В 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 данными из другой таблицы.