マルチテナントアプリケーションを実装しようとしています。つまり、単一のデータベース内のすべてのクライアントのデータです。各共有テーブルには、tenant_id
データを分離するためのフィールドがあります。
すべてのSELECTクエリに{pseudoc-code}を追加してデータを分離したいのですが、where('tenant_id = ', $user->getTenantID())
事前に解決策を見つけることができませんでしたが、検討しているアプローチは次のとおりです。1)大雑把なアプローチ:すべてのクラスのすべてfetchAll
のfetchOne
関数をカスタマイズする(私は怒ります!)2)リスナーを使用する:preDqlSelect
イベントをコーディングし、すべてのクエリに「where」を追加する可能性があります3)override buildQuery
():の例を見つけることができませんでしたこれはフロントエンド用です4)実装contentformfilter
:ここでもポインタが必要です
誰かがこれらを検証し、効率性、適合性についてコメントしていただければ幸いです。また、誰かが別の戦略を使用してマルチテナンシーを達成した場合は、plシェアします。ありがとう