我第一次使用Lumen和Eloquent构建API。我需要在一个请求中跨多个数据库查询同一个表。我使用的算法如下:
foreach($db in $dbs) {
config(['database.connections.clientdb.database' => $db]);
$count = MyModel->all()->count()
$myArray[] = $count
}
不是获取不同值的数组,而是始终相同;从第一个数据库连接生成的值。
由于第一个数据库不是已配置的数据库,因此我知道config
命令有效(至少一次)。我验证了数据库名称在每次迭代时都会发生变化。我(故意)不使用缓存。我使用$mymodel = new MyModel('$db')
并在构造函数中执行模型setConnection()
,然后设置$mymodel = null
。 $count
的值永远不会改变。
我猜测数据库连接没有被释放。如何让Lumen / Laravel / Eloquent拆除数据库连接并连接到同一请求中的另一个连接?