Phalcon多模塊如何實現連接不同數據庫 《Phalcon入坑指南系列 五》

本系列目錄

一、Phalcon在Windows上安裝 《Phalcon入坑指南系列 一》

二、Phalcon入坑必須知道的功能《Phalcon入坑指南系列 二》

三、Phalcon如何切換數據庫《Phalcon入坑指南系列 三》

四、Phalcon如何創建多模塊並能進行訪問 《Phalcon入坑指南系列 四》

前言

在第三節中Phalcon如何切換數據庫《Phalcon入坑指南系列 三》咔咔說明了如何切換數據庫,也就是連接多個數據庫。

第三節使用的是一個模塊,今天我們來聊聊如何使用Phalcon來實現多模塊連接不同數據庫。

一、在多模塊下創建模型文件

在第四節中使用了命令行創建了控制器,但是沒有給大家說明如何使用命令行來創建模型文件。

執行命令phalcon model --name version --output=app/modules/kaka/models即可。

這個命令執行也就是創建一個version的模型文件,在app/modules/kaka/models這個目錄下。

創建過程中咔咔遇到的問題分為倆種,接下來分別看一下。

發生的問題
發生的問題

問題一

第一個問題SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)這個問題想必都知道答案!

如果你不知道這個問題的原因那就需要好好補一下基礎了。

這個問題就是因為在框架裡邊沒有配置數據庫信息造成 的。

配置數據庫信息
配置數據庫信息

問題二

問題二的報錯信息ERROR: Table "version" does not exist.這個問題不會立即出現。

假設跟咔咔一樣連接的是enen這個庫,那麼執行創建模型文件的命令是不會報錯的。

那麼這個錯誤是怎麼來的呢?是咔咔連接的是test數據庫,創建的模型文件確實enen庫的表,所以會造成這個問題。

這個問題如何處理下文在聊。

通過命令行創建的模型
通過命令行創建的模型

二、如何在多模塊下連接不同數據庫

Phalcon如何切換數據庫《Phalcon入坑指南系列 三》中咔咔也演示了數據庫連接的位置。

連接位置
連接位置

可以看到在模塊下同樣也是在server下進行連接的。

在單模塊下是可以直接在server中再把另一個庫註冊進來,然後在模型文件中使用$this->setConnectionService('enen');進行切換。

那麼接下來看多模塊是如何是如何實現的。

將services文件中的連接數據庫先注釋掉。

注釋
注釋

這塊代碼需要自己去看,後期有時間了在解析這個module這個文件是如何加載的吧!

module模塊
module模塊

在module這個文件下有一個方法為registerServices,並注入了di

註冊服務
註冊服務

那麼肯定就可以在這裡邊連接數據庫了,按照咔咔的方式把數據庫信息先給寫上。

這裡需要注意的是需要引入use Phalcon\Db\Adapter\Pdo\Mysql;這點切記。

同樣給另一個模塊kaka的module文件也加上對應的數據庫連接信息。

連接信息
連接信息

分別再倆個模塊下進行測試

測試文件
測試文件
測試文件
測試文件

打印結果一

打印結果一
打印結果一

打印結果二

打印結果二
打印結果二

可以看到Phalcon多模塊如何實現連接不同數據庫 實現起來是如此的簡單。

三、多模塊下分別創建對應數據庫的模型文件

在第一節中遇到的了一個問題如果沒有分開連接數據庫,假設現在在services中默認連接的是test數據庫。

創建模型文件的表在enen庫中,會發現是會出現報錯的。

再根據第二節的解讀,把services文件中的配置數據庫信息先注釋掉。

然後在不同模塊下的module下分別連接不同的數據庫再測試一下。

kaka模塊下創建模型

kaka模塊下創建模型
kaka模塊下創建模型

frontend模塊下創建模型

創建模型文件
創建模型文件

會發現依然處於報錯狀態。

如果需要緊急處理就直接修改config中的配置信息即可

修改配置信息
修改配置信息

也就是說想要在那個模塊下創建對應數據庫表的模型文件就需要在config文件中修改對應的配置信息即可。

這個問題暫時咔咔是這樣解決的,後期這個問題肯定會進行解決,關注咔咔《Phalcon入坑指南系列 》系列文章即可。

總結

本文主要處理Phalcon使用過程中的三個問題

一、在多模塊下創建模型文件
二、如何在多模塊下連接不同數據庫
三、多模塊下分別創建對應數據庫的模型文件

如果你正好需要這其中的功能,那麼就不要吝嗇你手中的贊,給咔咔來一個吧!

堅持學習、堅持寫作、堅持分享是咔咔從業以來一直所秉持的信念。希望在偌大互聯網中咔咔的文章能帶給你一絲絲幫助。我是咔咔,下期見。

Tags: