@willa_will
Для подключения к нескольким схемам PostgreSQL в Laravel, вы можете использовать различные подключения к базе данных в файле конфигурации .env
.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
DB_CONNECTION=default DB_HOST=127.0.0.1 DB_PORT=5432 DB_DATABASE=database1 DB_USERNAME=username1 DB_PASSWORD=password1 DB_CONNECTION_SECOND=default DB_HOST_SECOND=127.0.0.1 DB_PORT_SECOND=5432 DB_DATABASE_SECOND=database2 DB_USERNAME_SECOND=username2 DB_PASSWORD_SECOND=password2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
'connections' => [ 'default' => [ 'driver' => env('DB_CONNECTION', 'pgsql'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '5432'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8mb4', 'prefix' => '', 'prefix_indexes' => true, 'schema' => 'public', 'sslmode' => 'prefer', ], 'second' => [ 'driver' => env('DB_CONNECTION_SECOND', 'pgsql'), 'host' => env('DB_HOST_SECOND', '127.0.0.1'), 'port' => env('DB_PORT_SECOND', '5432'), 'database' => env('DB_DATABASE_SECOND', 'forge'), 'username' => env('DB_USERNAME_SECOND', 'forge'), 'password' => env('DB_PASSWORD_SECOND', ''), 'charset' => 'utf8mb4', 'prefix' => '', 'prefix_indexes' => true, 'schema' => 'public', 'sslmode' => 'prefer', ], ], |
1 2 3 4 5 |
// Используйте подключение "default" $users = DB::connection('default')->select('select * from users'); // Используйте подключение "second" $products = DB::connection('second')->select('select * from products'); |
Вы можете продолжить использовать фасады DB
или использовать модели Eloquent с заданными подключениями.
@willa_will
Кроме того, можно использовать различные подключения в моделях Eloquent, указав соответствующее подключение в свойстве $connection модели. Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
namespace App; use IlluminateDatabaseEloquentModel; class User extends Model { // Используем подключение 'default' protected $connection = 'default'; protected $table = 'users'; } class Product extends Model { // Используем подключение 'second' protected $connection = 'second'; protected $table = 'products'; } |
После определения соответствующих подключений в моделях Eloquent, вы можете выполнять запросы к базам данных с использованием разных подключений:
1 2 3 4 5 |
// Получить всех пользователей из базы данных 'default' $users = User::all(); // Получить все продукты из базы данных 'second' $products = Product::all(); |
Таким образом, с помощью Laravel вы можете легко подключиться к нескольким схемам PostgreSQL и управлять данными из разных баз данных.