Я хочу подключить несколько баз данных в Laravel 5.5. Я пытался с помощью этот но это не похоже на работу. Я хочу использовать https://github.com/graphaware/neo4j-php-client как клиент для подключения к графовой базе данных, я хотел использовать это для непосредственного выполнения запросов шифрования.
Какие изменения я должен внести в config / database.php, чтобы приспособиться к такому условию, и как мне получить доступ к каждой базе данных из кода?
Вы можете создать собственного провайдера, например, в App\Providers\Neo4jServiceProvider.php
и определите 2 или более соединений с клиентом:
class Neo4jServiceProvider extends ServiceProvider
{
/**
* Register the application services.
*
* @return void
*/
public function register()
{
$this->app->singleton(Client::class, function() {
return ClientBuilder::create()
->addConnection('server1', getenv('NEO4J_1_HOST'))
->addConnection('server2', getenv('NEO4J_2_HOST'))
->build();
});
}
}
Затем вы регистрируете провайдера в своем приложении, добавьте его в providers
массив из config/app.php
файл :
App\Providers\Neo4jServiceProvider::class,
Добавьте параметры соединений для ваших neo4j dbs в файл .env.
Далее вы можете внедрить этот сервис в любом месте и запросить любую базу данных:
class MyController
{
private $client;
public function __construct(Client $client)
{
$this->client = $client;
}
public function doSomeQueries()
{
// Query DB 1
$result = $this->client->run('MATCH (n) RETURN count(n)', null, null, 'server1');
// Query DB 2
$result2 = $this->client->run('MATCH (n) RETURN count(n)', null, null, 'server2');
}
Других решений пока нет …