Миграция базы данных при перемещении фреймворка

На моем рабочем месте было принято решение попробовать модернизировать некоторые из наших веб-сайтов, написанных на ванильном PHP. Учитывая это, мы сделали шаг в сторону Laravel, так как после некоторых исследований это показалось разумным выбором.

Недавно я изучал миграцию данных, так как у нас есть приложение, которое обслуживает около 500 клиентов, которым нужны перемещенные данные; эти данные были зашифрованы с использованием специального класса PHP для обработки шифрования и дешифрования.

Поэтому я предпринял следующие шаги для управления миграцией

  1. Использовал функцию дешифрования в приложении для расшифровки данных
  2. Переместил эти данные в файл CSV
  3. Обновлены все столбцы и удалены те, которые больше не используются
  4. Импортировал файл CSV с помощью phpMyAdmin
  5. Установил пакет в моем приложении Laravel, которое может преобразовывать данные базы данных в средство просмотра базы данных, которое можно использовать в Laravel

Теперь у меня есть сеялка с именем UsersTableSeeder, которая содержит все старые пользовательские данные.

В моей модели User я определил Accessors и Mutators для работы с шифрованием и дешифрованием с помощью собственных функций шифрования и дешифрования Laravel.

Например, с first_name я сделал следующее:

/**
* Encrypt first_name
*
* @param [type] $value
* @return void
*/
public function setFirstNameAttribute($value)
{
$this->attributes['first_name'] = encrypt(ucfirst($value));
}

/**
* Decrypt first_name if the field is NOT empty.
*
* @param [type] $value
* @return void
*/
public function getFirstNameAttribute($value)
{
return empty($value) ? '' : decrypt($value);
}

Этот подход работает при записи и извлечении данных из приложения.

мой UsersTableSeeder выглядит так:

    \DB::table('users')->insert(array (
0 =>
array (
'title' => 'Mr',
'first_name' => 'first',
'last_name' => 'last',
'email' => 'me@gmail.com',
'mobile_number' => NULL,
'member_type' => 'Active',
'contact_by_email' => '0',
'contact_by_phone' => '0',
'contact_by_post' => '0',
'remember_token' => 'pOxr1PgwQo',
'created_at' => '2018-01-29 00:00:00',
'updated_at' => '2018-01-29 00:00:00',
),

Который создается путем обратного заполнения базы данных, которую я импортировал.

Проблема в том, что \DB::table('users')->insert() не проходит через User модель, поэтому данные не зашифрованы при запуске семян.

Я мог бы изменить каждое утверждение в сеялке, чтобы использовать User::create([]) но было бы более целесообразно написать консольную команду?

Кто-нибудь из вас, ребята, сталкивался с подобной ситуацией?

Миграции базы данных обычно обрабатываются исключительно самой базой данных, а не прокачивают данные через приложение?

Я использую пакет для обратного посева: https://github.com/orangehill/iseed

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …