phalcon3から5にバージョンアップした際のDB関連の対応

phalcon3から5にバージョンアップした際にDB周りで発生したHTTP ERROR 500やDeprecated対応

Service Mysql is not registered

FastCGI sent in stderr: "PHP message: Service Mysql is not registered
#0 [internal function]: Phalcon\Factory\AbstractConfigFactory->getException()
#1 [internal function]: Phalcon\Factory\AbstractFactory->getService()
#2 [internal function]: Phalcon\Db\Adapter\PdoFactory->newInstance()
#3 /web/dev/ttonosaki/juku/app/settings/services.php(28): Phalcon\Db\Adapter\PdoFactory->load()
#4 [internal function]: Closure->{closure}()
#5 [internal function]: Phalcon\Di\Service->resolve()
#6 [internal function]: Phalcon\Di\Di->get()
#7 [internal function]: Phalcon\Di\Di->getShared()
#8 [internal function]: Phalcon\Mvc\Model\Manager->getConnection()
#9 [internal function]: Phalcon\Mvc\Model\Manager->getReadConnection()

DBの設定(config)でadapterの指定がMysqlからmysqlに変わったようなので修正。

-adapter = Mysql
+adapter = mysql

https://docs.phalcon.io/5.0/ja-jp/db-layer#load

SQLSTATE[HY000] [2002] No such file or directory

MySQLに接続できないエラー

FastCGI sent in stderr: "PHP message: SQLSTATE[HY000] [2002] No such file or directory
#0 [internal function]: PDO->__construct()
#1 [internal function]: Phalcon\Db\Adapter\Pdo\AbstractPdo->connect()
#2 [internal function]: Phalcon\Db\Adapter\Pdo\AbstractPdo->__construct()
#3 [internal function]: Phalcon\Db\Adapter\Pdo\Mysql->__construct()
#4 [internal function]: Phalcon\Db\Adapter\PdoFactory->newInstance()
#5 {pathto}/app/settings/services.php(31): Phalcon\Db\Adapter\PdoFactory->load()

PdoFactory->load()に渡すconfigの形式が変わったようです。
iniファイルをそのままconfigとして受けたしてもダメだったので以下のように修正。

-return (new PdoFactory())->load($config->database);
+return (new PdoFactory())->load([
+    'adapter'  => $config->database->adapter,
+    'options' => [
+        'host'     => $config->database->host,
+        'username' => $config->database->username,
+        'password' => $config->database->password,
+        'dbname'   => $config->database->dbname
+    ]
+]);

マニュアルを見る感じではiniファイルで設定した値をそのまま渡してもよさそうな記述でした。
https://docs.phalcon.io/5.0/ja-jp/db-layer#load

githubでコメントを見ると、マニュアルとは違う形式で受け取る内容がコメントに記載してありました。
https://github.com/phalcon/cphalcon/blob/v5.2.1/phalcon/Db/Adapter/PdoFactory.zep#L29-L41

Call to undefined method Criteria::addWhere()

Call to undefined method Phalcon\Mvc\Model\Criteria::addWhere()

phalcon v4でCriteria::addWhere()は削除されました。
https://docs.phalcon.io/4.0/ja-jp/upgrade#mvcmodelcriteria

andWhere()に変更

そのほかのアップグレードで発生したエラー対応