В Laravel 8 вы можете легко перенести данные из одной таблицы в другую таблицу с помощью Eloquent моделей и Query Builder.
Для начала, убедитесь, что у вас есть две таблицы с одинаковой структурой, в которые вы хотите перенести данные. Предположим, что у вас есть таблица "old_table" и "new_table" с теми же столбцами.
1. Создайте модели для обеих таблиц. Для этого выполните команду artisan:
php artisan make:model OldTable php artisan make:model NewTable
2. Откройте файл модели "OldTable.php" и "NewTable.php" и установите имя таблицы, которое соответствует имени вашей таблицы:
protected $table = 'old_table';
protected $table = 'new_table';
3. В вашем представлении или шаблоне, где расположена кнопка, создайте форму, которая отправит POST запрос на определенный маршрут:
<form action="{{ route('moveData') }}" method="POST"> @csrf <button type="submit">Перенести данные</button> </form>
4. В файле маршрутов (routes/web.php) определите маршрут для переноса данных:
use AppHttpControllersTableController; Route::post('/move-data', [TableController::class, 'moveData'])->name('moveData');
5. Создайте контроллер с помощью команды artisan:
php artisan make:controller TableController
6. Откройте файл "TableController.php" и добавьте метод "moveData", который будет обрабатывать POST запрос и переносить данные:
use AppModelsOldTable; use AppModelsNewTable; public function moveData() { // Получите все записи из старой таблицы $data = OldTable::all(); // Переберите каждую запись и создайте новую запись в новой таблице foreach ($data as $item) { NewTable::create($item->toArray()); } // Удалите все записи из старой таблицы (если нужно) OldTable::truncate(); return redirect()->back()->with('success', 'Данные успешно перенесены!'); }
В этом методе мы сначала получаем все записи из таблицы "old_table" с помощью Eloquent модели "OldTable". Затем мы перебираем каждую запись и создаем новую запись в "new_table" с помощью метода "create()" Eloquent. Вызов метода "toArray()" преобразует модель в массив данных, который передается в метод "create()".
Мы также можем использовать метод "truncate()" для удаления всех записей в таблице "old_table" (если это нужно). Этот метод очищает таблицу и возвращает ее в исходное состояние.
Наконец, мы возвращаемся на предыдущую страницу с сообщением об успехе.
GitGub репозиторий с файлами можно посмотреть по ссылке: [GitHub](https://github.com/laravel/framework)
Вот и все! Теперь, при нажатии на кнопку "Перенести данные" данные будут скопированы из таблицы "old_table" в таблицу "new_table".