我想在Laravel 5.5中连接多个数据库。我尝试使用this,但它似乎不起作用。我想使用https://github.com/graphaware/neo4j-php-client作为客户端连接到图形DB,我想使用它的原因是直接运行cypher查询。
我应该在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,
在.env文件中添加neo4j dbs的连接参数。
接下来,您可以在任何地方注入此服务并查询任何db:
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');
}