Laravel多数据库[重复]
Posted
技术标签:
【中文标题】Laravel多数据库[重复]【英文标题】:Laravel multi databases [duplicate] 【发布时间】:2018-06-16 23:55:41 【问题描述】:我正在尝试使用多个数据库来使用 laravel:
Laravel 版本:5.5.28 php 版本 7.2.0 数据库驱动和版本:MariaDB 10.1.29定义连接:
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 文件中配置的内容
请问,谁能帮我解决这个问题?
【问题讨论】:
试试:php artisan config:clear
确保你有一个新的配置文件
【参考方案1】:
您可以配置:
在.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
:
'mysql' => [
'driver' => env('DB_CONNECTION'),
'host' => env('DB_HOST'),
'port' => env('DB_PORT'),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
],
'mysql2' => [
'driver' => env('DB_CONNECTION_SECOND'),
'host' => env('DB_HOST_SECOND'),
'port' => env('DB_PORT_SECOND'),
'database' => env('DB_DATABASE_SECOND'),
'username' => env('DB_USERNAME_SECOND'),
'password' => env('DB_PASSWORD_SECOND'),
],
祝你好运!
【讨论】:
【参考方案2】:有两种方法可以实现这一点,一旦您动态更改连接,您必须传播连接,您可以这样做。
if ($this->propogateConnection)
$instance->setConnection($this->getConnectionName());
另一件事是您可以使用Model::on('connection_name',true)
,而 true 用于传播连接。
希望这会有所帮助。
【讨论】:
您好,感谢您的回复,但我仍然不清楚如何解决此问题...您能给我一个示例、视频或存在此解决方案的网站吗?以上是关于Laravel多数据库[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel 4 中使用在 2 个数据库之间创建多对多关系