Doctrine 2を使用するZendフレームワーク2で、コントローラーアクションで動的エンティティ名を使用するにはどうすればよいですか?
たとえば。
public function indexAction()
{
return new ViewModel(array(
'albums' => $this->getEntityManager()->getRepository('Album\Entity\[dynamic_entity_name]')->findAll()
));
}
また、そもそも、ここでの私の場合のように、単一のコントローラーで複数のエンティティを使用することもできますか?
このようなことを行うためのルートは、基本的に、アプリケーションにライブモードとテストモードの2つのモードがあり、ユーザーはどちらのモードでもデータを保存できます(支払いゲートウェイバックエンドのサンドボックスモードやライブモードなど)。
モードごとに1つずつ、2つの異なるテーブルが必要です。たとえば、ユーザーが行う支払いのpayment_testテーブルとpayment_liveテーブルなどです。
したがって、私のコントローラーでは、ユーザーが使用している現在のモード(テストまたはライブ)に基づいて、データをそれぞれのエンティティ(PAYMENT_LIVEまたはPAYMENT_TEST)から取得/保存する必要があります。
すべての場所で現在のモードの条件を確認することは悪い悪い考えだと思います。したがって、一度CURRENT_MODE CONSTANTに設定してから、次のようにエンティティ名を動的に使用するために使用します。
public function indexAction()
{
return new ViewModel(array(
'payments' => $this->getEntityManager()->getRepository('Payment\Entity\Payment_'.CURRENT_MODE.')->findAll()
));
}
これは、CURRENT_MODE = "live"または"test"の値に基づいて、ライブモードにPayment_liveエンティティを使用し、テストモードにPayment_testエンティティを使用します。
これを実装するにはどうすればよいですか?