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這個文件下有一個方法為registerServices
,並注入了di
那麼肯定就可以在這裡邊連接數據庫了,按照咔咔的方式把數據庫信息先給寫上。
這裡需要注意的是需要引入use Phalcon\Db\Adapter\Pdo\Mysql;
這點切記。
同樣給另一個模塊kaka的module文件也加上對應的數據庫連接信息。
分別再倆個模塊下進行測試
打印結果一
打印結果二
可以看到Phalcon多模塊如何實現連接不同數據庫 實現起來是如此的簡單。
三、多模塊下分別創建對應數據庫的模型文件
在第一節中遇到的了一個問題如果沒有分開連接數據庫,假設現在在services中默認連接的是test數據庫。
創建模型文件的表在enen庫中,會發現是會出現報錯的。
再根據第二節的解讀,把services文件中的配置數據庫信息先注釋掉。
然後在不同模塊下的module下分別連接不同的數據庫再測試一下。
kaka模塊下創建模型
frontend模塊下創建模型
會發現依然處於報錯狀態。
如果需要緊急處理就直接修改config中的配置信息即可
也就是說想要在那個模塊下創建對應數據庫表的模型文件就需要在config文件中修改對應的配置信息即可。
這個問題暫時咔咔是這樣解決的,後期這個問題肯定會進行解決,關注咔咔《Phalcon入坑指南系列 》
系列文章即可。
總結
本文主要處理Phalcon使用過程中的三個問題
一、在多模塊下創建模型文件
二、如何在多模塊下連接不同數據庫
三、多模塊下分別創建對應數據庫的模型文件
如果你正好需要這其中的功能,那麼就不要吝嗇你手中的贊,給咔咔來一個吧!
「
堅持學習、堅持寫作、堅持分享是咔咔從業以來一直所秉持的信念。希望在偌大互聯網中咔咔的文章能帶給你一絲絲幫助。我是咔咔,下期見。
」