如何在控制器操作中使用动态实体名称,在 Zend 框架 2 中使用 Doctrine 2?
例如。
public function indexAction()
{
return new ViewModel(array(
'albums' => $this->getEntityManager()->getRepository('Album\Entity\[dynamic_entity_name]')->findAll()
));
}
另外,首先,我什至可以在一个控制器中使用多个实体,就像我在这里的情况一样?
这样做的根源是,我的应用程序中基本上有两种模式,实时和测试,用户可以在任何一种模式下保存数据(例如支付网关后端的沙盒和实时模式)。
我需要有两个不同的表,每个模式一个;例如,用户付款的 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 实体进行测试模式。
有什么想法我应该如何实施这个?