本系列目錄

一、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這個檔案下有一個方法為registerServices,並注入了di


註冊服務

那麼肯定就可以在這裡邊連線資料庫了,按照咔咔的方式把資料庫資訊先給寫上。

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

同樣給另一個模組kaka的module檔案也加上對應的資料庫連線資訊。


連線資訊

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


測試檔案

測試檔案

列印結果一


列印結果一

列印結果二


列印結果二

可以看到Phalcon多模組如何實現連線不同資料庫 實現起來是如此的簡單。

三、多模組下分別建立對應資料庫的模型檔案

在第一節中遇到的了一個問題如果沒有分開連線資料庫,假設現在在services中預設連線的是test資料庫。

建立模型檔案的表在enen庫中,會發現是會出現報錯的。

再根據第二節的解讀,把services檔案中的配置資料庫資訊先註釋掉。

然後在不同模組下的module下分別連線不同的資料庫再測試一下。

kaka模組下建立模型


kaka模組下建立模型

frontend模組下建立模型


建立模型檔案

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

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


修改配置資訊

也就是說想要在那個模組下建立對應資料庫表的模型檔案就需要在config檔案中修改對應的配置資訊即可。

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

總結

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

一、在多模組下建立模型檔案
二、如何在多模組下連線不同資料庫
三、多模組下分別建立對應資料庫的模型檔案

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

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