php – 如何在phalcon框架中同时连接多个数据库同时在模型类中使
发布时间:2020-12-13 22:06:19 所属栏目:PHP教程 来源:网络整理
导读:在我的代码中,我有两个数据库ABC和XYZ.我想在同一模型中使用两个数据库而不是phalcon中的解决方案是什么?如何为此实现多个数据库连接? 解决方法 一 ?php//This service returns a MySQL database$di-set('dbMysql',function() { return new PhalconDbAd
|
在我的代码中,我有两个数据库ABC和XYZ.我想在同一模型中使用两个数据库而不是phalcon中的解决方案是什么?如何为此实现多个数据库连接?
解决方法
一
<?php
//This service returns a MySQL database
$di->set('dbMysql',function() {
return new PhalconDbAdapterPdoMysql(array(
"host" => "localhost","username" => "root","password" => "secret","dbname" => "invo"
));
});
//This service returns a PostgreSQL database
$di->set('dbPostgres',function() {
return new PhalconDbAdapterPdoPostgreSQL(array(
"host" => "localhost","username" => "postgres","password" => "","dbname" => "invo"
));
});
二 <?php
class Robots extends PhalconMvcModel
{
public function initialize()
{
$this->setConnectionService('dbPostgres');
}
}
三 <?php
class Robots extends PhalconMvcModel
{
public function initialize()
{
$this->setReadConnectionService('dbSlave');
$this->setWriteConnectionService('dbMaster');
}
}
四 class Robots extends PhalconMvcModel
{
/**
* Dynamically selects a shard
*
* @param array $intermediate
* @param array $bindParams
* @param array $bindTypes
*/
public function selectReadConnection($intermediate,$bindParams,$bindTypes)
{
//Check if there is a 'where' clause in the select
if (isset($intermediate['where'])) {
$conditions = $intermediate['where'];
//Choose the possible shard according to the conditions
if ($conditions['left']['name'] == 'id') {
$id = $conditions['right']['value'];
if ($id > 0 && $id < 10000) {
return $this->getDI()->get('dbShard1');
}
if ($id > 10000) {
return $this->getDI()->get('dbShard2');
}
}
}
//Use a default shard
return $this->getDI()->get('dbShard0');
}
}
五 <?php
$robot = Robots::findFirst('id = 101');
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
