Как подключится к нескольким схемам postgresql в laravel?

Пользователь

от willa_will , в категории: SQL , год назад

Как подключится к нескольким схемам postgresql в laravel?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jensen , год назад

@willa_will 

Для подключения к нескольким схемам PostgreSQL в Laravel, вы можете использовать различные подключения к базе данных в файле конфигурации .env .

  1. Добавьте несколько подключений в файле .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. Добавьте соответствующие настройки подключения в файле config/database.php :
 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. Теперь вы можете использовать различные подключения в своих моделях или запросах следующим образом:
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 с заданными подключениями.

Пользователь

от judd , 6 месяцев назад

@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 и управлять данными из разных баз данных.