我們的項目原本使用的是 mysql 數據庫,但為了提升數據庫的擴展性和容錯性,我們決定遷移到 cockroachdb。cockroachdb 雖然兼容 postgresql,但并非完全一致,直接使用 laravel 的 postgresql 驅動會導致一些功能失效。
我首先嘗試了直接使用 laravel 的 PostgreSQL 驅動連接 CockroachDB,并對代碼進行了一些調整。然而,很快我就遇到了麻煩。例如,在進行數據刪除時,如果使用了 JOIN 語句,程序就會拋出錯誤。此外,CockroachDB 不支持 PostgreSQL 的全文搜索功能,這對于我們的項目來說是一個很大的限制。
在一番搜索之后,我找到了 ylsideas/cockroachdb-laravel 這個 composer 包。它是一個專為 Laravel 設計的 CockroachDB 驅動程序,能夠很好地處理 CockroachDB 和 Laravel 之間的兼容性問題。安裝非常簡單,只需一條 Composer 命令:
composer require ylsideas/cockroachdb-laravel
安裝完成后,需要在 Laravel 的數據庫配置文件 .env 中添加一個新的數據庫連接:
'crdb' => [ 'driver' => 'crdb', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '26257'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', 'prefix_indexes' => true, 'schema' => 'public', 'sslmode' => 'prefer', 'cluster' => env('COCKROACHDB_CLUSTER', ''), // For CockroachDB serverless],
記得將 DB_CONNECTION 設置為 crdb。 這個包還支持使用 DATABASE_URL 進行配置,方便快捷。
使用 ylsideas/cockroachdb-laravel 后,之前遇到的問題都迎刃而解了。JOIN 語句在刪除操作中能夠正常工作,而且不再需要擔心全文搜索功能的缺失。 此外,它還特別支持 CockroachDB Serverless,只需要在配置中添加 cluster 參數即可。
總而言之,ylsideas/cockroachdb-laravel 這個 Composer 包極大地簡化了 Laravel 應用與 CockroachDB 的集成過程,提高了開發效率,避免了不必要的兼容性問題。 如果你也在使用 Laravel 和 CockroachDB,強烈推薦你嘗試一下這個包。 它讓我在項目開發中省去了不少時間和精力,讓我可以專注于業務邏輯的實現。 如果你想了解更多關于 Composer 的知識,可以參考這個在線學習地址:學習地址。