Я пробовал следующее
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();
});
}






Создайте новую запись в базе данных в 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) {...}
Я пробовал описанное выше, но столбец не добавлен, я обновил вопрос с попыткой.
Попробуйте с помощью Schema :: setConnection ('Inspection') -> table (...)
Странный. Может быть проблема с привилегиями базы данных? Что, если вы воспользуетесь tinker и введете \DB::connection('inspection)->table('tbl_user)->find(1);. Что это вам даст? (редактировать: all () не существует в этой настройке, find () есть)
Get not -> all отображает пользователей в процессе работы
Хорошо, последняя возможность для ваших миграций, но это с помощью команды artisan. Если у вас 2 БД, это нормально, если у вас 40, вам это не понравится. php artisan migrate --database=inspection
Если это работает и ваша хост-служба позволяет это, вы можете запустить команду shell_exec() в классе контроллера. В этом случае shell_exec('php artisan migrate --database=inspection') должен работать.
после изменения подключения к БД создайте миграцию, а затем запустите команду
php artisan migrateв файле контроллера.