Миграция проекта Laravel с одной базы данных на несколько баз - PullRequest
0 голосов
/ 11 марта 2019

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

Я понимаю, что после установки новой базы данных необходимо использовать:

connection('mysql2')

При обращении к базе данных, склонны ли мы изменять весь проект этим предложением? указав соединение в каждом месте?

Ответы [ 3 ]

2 голосов
/ 11 марта 2019

Migration с несколькими подключениями

public function up()
{
    Schema::connection('mysql-2')->create('user_details', function (Blueprint $table) {
        //........
    });
}

public function down()
{
  Schema::connection('mysql-2')->dropIfExists('user_details');
}

Обработка отношений с несколькими подключениями к базе данных

UserDetail.php // mysql-2 (соединение-2)

class UserDetail extends Model
{
    protected $connection = 'mysql-2';

    public function user()
    {
        return $this->setConnection('mysql')
                    ->belongsTo(User::class);
    }
}

User.php // mysql (соединение-1) // соединение по умолчанию

class User extends Model
{
    //with default connection

    public function detail()
    {
        return $this->setConnection('mysql-2')
                    ->hasOne(UserDetail::class);
    }
}

Вам не нужно указанное соединение в контроллере для извлечения / удаления / вставки данных

2 голосов
/ 11 марта 2019

Вы можете добавить свойство $connection к своим моделям Eloquent, чтобы указать подключение к базе данных. Таким образом, вам не нужно обновлять ваши запросы.

protected $connection = 'connection-name';
1 голос
/ 11 марта 2019

Я понимаю, что вы в основном спрашиваете, как изменить базу данных.

Для всего проекта: вы можете редактировать детали подключения mysql в вашем файле .env.

Вы также можете использовать 2 базы данных с1 проект, вы можете узнать, как сделать это из этого вопроса, на который уже дан ответ: Как использовать несколько баз данных в Laravel

Извините, если я не понял ваш вопрос.Дайте мне знать, если это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...