Изменение расположения пользовательской таблицы в Laravel 5.6

Я изучаю Laravel 5.6 и хочу иметь возможность использовать мою существующую таблицу user, которая присутствует в другой базе данных. Он по-прежнему называется пользователями, но в нем содержится очень много данных.

Чтобы добиться этого, мне действительно нужно сделать две вещи:

  • Пусть Laravel использует базу данных users в базе данных, отличной от базы данных по умолчанию.
  • Измените метод шифрования паролей на мой худший способ (пока я не начну использовать bcrypt для всех своих пользователей)

Так. Во-первых, в настоящее время у меня есть переменные базы данных Laravel .env, указывающие на мою тестовую базу данных laravel. Я бы хотел, чтобы при поиске/аутентификации пользователя использовалась таблица users в моей базе данных shop. Таким образом, вместо laravel.users будет shop.users.

Как я уже упоминал ранее, я не использовал хорошее шифрование, но пока я не доберусь до правильного шифрования всех паролей, мне нужно, чтобы Laravel использовал мой собственный метод шифрования (который, как я знаю, не так безопасен). Но хеширование выглядит следующим образом:

$hash = hash('sha256',$salt.$password.$salt);

Возможно ли это / как я могу достичь этих двух вещей?


person Chud37    schedule 27.02.2018    source источник


Ответы (2)


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

Из того, что я собрал, официальной поддержки для этого нет, но должно быть довольно просто написать небольшой скрипт, который переносит все данные из старой БД в новую, используя обычные запросы php sql и просто зациклить все это на новом.

Или просто используйте какой-нибудь неофициальный пакет.

person Slimez    schedule 27.02.2018
comment
Да, я мог бы это сделать, но у меня много поддоменов и веб-приложений, которые все указывают на одну пользовательскую базу данных, и я не могу дублировать их все в каждой базе данных. Мне также не нужна огромная база данных с каждой отдельной таблицей в одном месте, это было бы просто грязно. - person Chud37; 27.02.2018
comment
@ Chud37 А, понятно. Я только что проверил документацию Eloquent, и кажется, что вы можете определить другое соединение с базой данных в своем приложении, а затем выбрать, какие модели должны использовать какое соединение. Что, если я правильно понял, именно то, что вы ищете. :) Найдите соединение laravel.com/docs/5.6/eloquent#basic-usage - person Slimez; 27.02.2018
comment
Я нашел ответ, это было намного проще, чем я думал! Я отправил ответ в ответ. Спасибо за вашу помощь. - person Chud37; 27.02.2018

Просто для справки, я нашел ответ на свой вопрос, просто изменив файл \config\auth.php. Был закомментирован массив, который выглядел так:

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],

    // 'users' => [
    //     'driver' => 'database',
    //     'table' => 'users2',
    // ],  
],

Я раскомментировал разделы и установил таблицу для пользователей2. Это работало нормально. Однако это все еще загружалось из той же базы данных. Поэтому я изменил строку table на: shop.users2, и она сразу заработала.

Простой! Я не смог найти никакой документации по этому поводу, но я рад, что это сработало.

person Chud37    schedule 27.02.2018