在控制器zf2 doctrine2中使用动态实体


use dynamic entities in controller zf2 doctrine2

如何在控制器动作中使用动态实体名称,在Zend框架2中使用原则2?

例如

public function indexAction()
    {
        return new ViewModel(array(
            'albums' => $this->getEntityManager()->getRepository('Album'Entity'[dynamic_entity_name]')->findAll() 
        ));
    }

此外,首先,我甚至可以在单个控制器中使用多个实体,就像我在这里的情况一样?

这样做的根是,我基本上在我的应用程序中有两种模式,live和test,用户可以在任何一种模式下保存数据(类似于支付网关后端的沙箱和live模式)。

我需要有两个不同的表,每个模式一个;例如,用户支付的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"的值,它将为live模式使用Payment_live实体,为测试模式使用Payment_test实体。

有什么想法我应该如何去实现这个吗?

我的第一个想法是:为什么有两个表,而不是只有一个标识符来查询模式。表payments中的一个名为payment_modus的字段(可以是一个布尔值,表示真/假)或其他东西。

除此之外,你当然可以在一个控制器中拥有多个存储库。

$repo = 'Payment'Entity'Payment_'.$this->getCurrentMode();
$em->getRepository($repo);

有点难回答,因为我真的不明白你的问题到底在哪里