Laravel Обновление столбца внешней базы данных при миграции

Я пробовал следующее

class ...migration

    public function up()
    {
    //
    $connections = \App\AppConnectionsModel::get();
    foreach ($connections as $connection){
        ///set the default configurations
        Config::set('database.connections.inspection.database', $connection->database);
        Config::set('database.connections.inspection.port', $connection->port);
        Config::set('database.connections.inspection.username', $connection->username);
        Config::set('database.connections.inspection.password', $connection->password);
        Config::set('database.connections.inspection.host', $connection->host);


        //then get db and change the column tables
        Schema::table('tbl_users', function(Blueprint $table) {
            $table->string('password')->default('n/a');

        });


    }

}

Что я пытаюсь сделать, так это добавить столбец tbl_users во внешнюю таблицу базы данных.

Что еще мне нужно добавить, чтобы это работало ?

Я тоже пробовал

$connections = \App\AppConnectionsModel::get();
    foreach ($connections as $connection){
        //update user
       ...set config as above
        Schema::connection('inspection')->table('tbl_user',function(Blueprint $table){
            $table->string('password')->unsigned()->nullable();
        });
    }

после изменения подключения к БД создайте миграцию, а затем запустите команду php artisan migrate в файле контроллера.

Bhaumik Pandhi 31.03.2018 13:22
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
169
1

Ответы 1

Создайте новую запись в базе данных в config/database.php. Например, БД sqlite, которую я использую на сайте:

'connections' => [

    'sqlite' => ['driver'   => 'sqlite',
                 'database' => database_path('database.sqlite'),
                 'prefix'   => '',],

Вы можете дать ему любое имя, оно не обязательно должно быть sqlite. Для использования другой БД, кроме стандартной, используйте \DB::connection('yourDBname')->...

Когда все подключения к БД установлены в конфигурации, создайте массив с именами ваших подключений и зациклите их оттуда.

Если вам нужна схема для миграций, используйте \Schema::setConnection('yourDBname')->create('table_name', function(Blueprint $table) {...}

Я пробовал описанное выше, но столбец не добавлен, я обновил вопрос с попыткой.

Geoff 31.03.2018 10:57

Попробуйте с помощью Schema :: setConnection ('Inspection') -> table (...)

Dimitri Mostrey 31.03.2018 11:04

Странный. Может быть проблема с привилегиями базы данных? Что, если вы воспользуетесь tinker и введете \DB::connection('inspection)->table('tbl_user)->find(1);. Что это вам даст? (редактировать: all () не существует в этой настройке, find () есть)

Dimitri Mostrey 31.03.2018 11:19

Get not -> all отображает пользователей в процессе работы

Geoff 31.03.2018 11:26

Хорошо, последняя возможность для ваших миграций, но это с помощью команды artisan. Если у вас 2 БД, это нормально, если у вас 40, вам это не понравится. php artisan migrate --database=inspection

Dimitri Mostrey 31.03.2018 11:29

Если это работает и ваша хост-служба позволяет это, вы можете запустить команду shell_exec() в классе контроллера. В этом случае shell_exec('php artisan migrate --database=inspection') должен работать.

Dimitri Mostrey 31.03.2018 11:32

Другие вопросы по теме