我正在尝试使用多个数据库进行laravel使用:
定义连接:
return array(
'default' => 'mysql',
'connections' => array(
# Primary/Default database connection
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'bdd1',
'username' => 'root',
'password' => ''
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
# Secondary database connection
'mysql2' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'bdd2',
'username' => 'root',
'password' => ''
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
),
);
定义模型:
class Products extends Model {
protected $connection = 'mysql';
}
定义控制器:
class ProductController extends BaseController {
public function find()
{
$productModel= new Products;
$productModel->setConnection('mysql2');
$product= $productModel->find(1);
return $product;
}
}
上面的代码没有错误,但是如果我在控制器中更改连接的名称,它将继续使用.env文件中配置的内容
拜托,有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
您可以配置:
$("#titlecontent").addClass( "start" );
.env
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=bdd1
DB_USERNAME=root
DB_PASSWORD=
DB_CONNECTION_SECOND=mysql2
DB_HOST_SECOND=localhost
DB_PORT_SECOND=3306
DB_DATABASE_SECOND=bdd2
DB_USERNAME_SECOND=root
DB_PASSWORD_SECOND=
:
config/database.php
祝你好运!
答案 1 :(得分:0)
有两种方法可以实现这一点,一旦你动态更改了连接,就必须传播你可以这样做的连接。
if ($this->propogateConnection) {
$instance->setConnection($this->getConnectionName());
}
另一件事是你可以使用Model::on('connection_name',true)
,而true则用于传播连接。
希望这有帮助。