gpt4 book ai didi

CakePHP 3 多个数据库

转载 作者:行者123 更新时间:2023-12-01 09:48:45 24 4
gpt4 key购买 nike

我想使用 CakePHP 3 连接到第二个(远程)数据库。我在网上找到了建议如何将不同模型与不同数据库相关联的解决方案,但这不是我需要实现的。

我需要能够连接到远程数据库(与任何模型无关)并从我的 Controller 中的操作中读取/写入一些记录。这可以使用 CakePHP 实现吗?

编辑(更多信息):

我有一个网站作为酒店房间的预订平台。这些房间的可用性可以通过我的网站控制并存储在我的数据库中。但是对于某些客户,我希望能够直接连接到他们的私有(private)数据库并使用他们的记录来检查可用性。

最佳答案

按照以下说明

Step 1 : Open config/app.php Find Datasources array and add Remote Database configuration like as -


'Datasources' => [
'default' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => 'localhost',
'port' => '3306',
'username' => 'YOUR_DB_USER',
'password' => 'YOUR_DB_PASS',
'database' => 'YOUR_DB_NAME',
'encoding' => 'utf8',
'timezone' => 'UTC',
'flags' => [],
'cacheMetadata' => false,
'log' => false,
'quoteIdentifiers' => false,
'url' => env('DATABASE_URL', null),
],
'remote_db_1' => [ /*Remote Database 1*/
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => '192.168.1.47', /*YOUR_REMOTE_SERVER_IP*/
'port' => '3306',
'username' => 'REMOTE_DB_USER',
'password' => 'REMOTE_DB_PASS',
'database' => 'REMOTE_DB_NAME',
'encoding' => 'utf8',
'timezone' => 'UTC',
'flags' => [],
'cacheMetadata' => false,
'log' => false,
'quoteIdentifiers' => false,
'url' => env('DATABASE_URL', null),
],
'remote_db_2' => [ /*Remote Database 2*/
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => '192.168.1.47', /*YOUR_REMOTE_SERVER_IP*/
'port' => '3306',
'username' => 'REMOTE_DB_USER',
'password' => 'REMOTE_DB_PASS',
'database' => 'REMOTE_DB_NAME',
'encoding' => 'utf8',
'timezone' => 'UTC',
'flags' => [],
'cacheMetadata' => false,
'log' => false,
'quoteIdentifiers' => false,
'url' => env('DATABASE_URL', null),
],

Step 2 : Now you can access Remote database in your controller like as-


use Cake\Datasource\ConnectionManager;
use \PDO;

class YourController extends AppController{
public function getRemoteData(){
$conn1 = ConnectionManager::get('remote_db_1'); #Remote Database 1
$conn2 = ConnectionManager::get('remote_db_2'); #Remote Database 2
}
}

Note: Now you can use PDO methods to Insert,Retrieve,Update



示例:
class YourController extends AppController{
public function getRemoteData(){
$conn1 = ConnectionManager::get('remote_db_1'); #Remote Database 1
$sql = "SELECT * FROM users";
$query = $conn1->prepare($sql);
$query->execute();
$result = $query->fetchAll(); #Here is the result
}
}

关于CakePHP 3 多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42784824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com