カッティングボード

カルマをカットしてます

cakephp3でマルチテナントっぽいやつ

 cakephp3でデータベースを切り替える方法のマルチテナントを実装しようとしたときにかなり詰まったのでそれのまとめ。

 cakephp3のpluginとしてまとめられているマルチテナントは、ソースコード読む限りデータベース自体を切り替えたりする方法ではなく、マルチテナントIDみたいなのを作ってそれで絞ってからあれこれするやつっぽかった。それでやると、データベース自体が分かれているわけではないので別テナントの情報が混ざってしまうので良くない。

 アクセスするデータベースを切り替える方法をいろいろ探し回って、cakephp3のソースコード読もうとして読めなかったりした結果、普通にドキュメントに書いてありました。方法としてはテーブルオブジェクトの接続設定でどのコネクションを利用するかテーブルオブジェクトで設定します。まぁ適当にtenantとかにしとけばいいんじゃないかな。その後、データベースの基本の設定に書いてあるように、tenantコネクションをコントローラーで作成すれば、コントローラー側で動的にアクセスするデータベースを切り替えられるようになりました。

 

cakephp3のマルチテナントplugin

github.com