Соединение с несколькими базами данных Laravel
База данных 1 = db1 База данных 2 = db2
У меня есть подключение к двум базам данных, я хотел запустить eloquent или БД, которые соединяют таблицу connection1 и connection 2 (db1.users и db2.users), и проверить connection1 id = connection 2 или нет.
кто-нибудь может подсказать мне, как это сделать?
Цените это, если кто-то мог бы вести меня, что делать.
имя пользователя db1 имя ori_id
имя пользователя db2 ori_user
выберите db2.ori_user.name из db1.user присоединитесь к db1.user в db1.user.ori_id = db2.ori_user.id
2 ответа
Да, это возможно, если они находятся на одном сервере, например:
$result = \DB::table('db1.users')
->join('db2.users', 'db2.users.id', '=', 'db1.users.id')
->select('db1.users.id as db1_id', 'db1.users.email as db1_email', 'db2.users.*')
->get();
Убедитесь, что у пользователя есть доступ / право использовать обе базы данных.
В файле database.php
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'customers'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
],
'mysql2' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'customers2'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
],
Здесь клиенты - это база данных1, а клиенты - это база данных2
в контроллере
$data=DB::select('select customers2.ori_user.name from customers.user join customers2.ori_user on customers.user.ori_id = customers2.ori_user.id');
или же
$data=DB::select('your_query');
Ссылка на YouTube: https://www.youtube.com/watch?v=Kgl3FzqP1Ps&feature=youtu.be