Symfony2提交表格后保存相关实体的数据

时间:2014-02-01 23:34:43

标签: php symfony orm entity relation

我开始使用Symfony2进行开发,看起来我需要帮助。我有与SynchronizationSetting实体相关的Product实体。我可以通过表格与他的实体编辑产品数据。但我还需要修改SynchronizationSetting中与产品相关的一些数据。为此,我修改了表单,使其看起来像那样(Vendor \ ProductBundle \ Form \ ProductType.php):

...
    ->add('synchronization_setting', 'choice', array(
            'choices' => array('daily' => 'Daily', 'weekly' => 'Weekly', 'never' => 'Never'))

在提交表单后,复选框值将传递给Product Entity中的setSynchronizationSetting方法。然后我这样做(Vendor \ ProductBundle \ Entity \ SynchronizationSetting.php):

public function setSynchronizationSetting($data)
{
        $synchronizationSetting = new SynchronizationSetting();
        $synchronizationSetting->setDaily(in_array('daily', $data) ? '1' : '0');
...
}

现在我需要以某种方式将SynchronizationSetting实体保存到数据库中。我读到从这里调用实体经理是非常糟糕的做法所以......我该如何保存?

1 个答案:

答案 0 :(得分:0)

一种可能的方式(我不确定这是不错的做法)

public function setSynchronizationSetting($data)
{
         $synchronizationSetting = new SynchronizationSetting();
         $synchronizationSetting->setDaily(in_array('daily', $data) ? '1' : '0');
}

public function retSynchronizationSetting()
{
    return $this->synchronizationSetting;
}

然后在您处理表单数据的控制器中,调用retSynchronizationSetting()并使用EntityManager保存实体。