Forms 将表单数据保存到自定义表

Forms 将表单数据保存到自定义表,forms,symfony,save,entity,magento2,Forms,Symfony,Save,Entity,Magento2,我有一个链接到控制器的表单,我的目标是将数据保存到我的自定义vendor\u module\u表中 我在网上看到了一些关于如何做的帖子。我对提供的解决方案的问题是,它们都使用对象管理器——我觉得这是一种糟糕的做法。特别是当M2基于Symfony时,我可以调用一个预构建的保存/添加函数到我的控制器中,该函数与我的表单相关,并且它可以正常工作。。Magento2为这个做了些什么吗 public function execute() { $post = (array) $this->ge

我有一个链接到控制器的表单,我的目标是将数据保存到我的自定义
vendor\u module\u表中

我在网上看到了一些关于如何做的帖子。我对提供的解决方案的问题是,它们都使用对象管理器——我觉得这是一种糟糕的做法。特别是当M2基于Symfony时,我可以调用一个预构建的保存/添加函数到我的控制器中,该函数与我的表单相关,并且它可以正常工作。。Magento2为这个做了些什么吗

public function execute()
{
    $post = (array) $this->getRequest()->getPost();

    if (!empty($post)) {
        $customerId = $post['customer_id'];
        $make = $post['make_id'];
        $model = $post['model_id'];
        $year = $post['year_id'];

        # to do - add insert
        $this->messageManager->addSuccessMessage('Success!');

        $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
        $resultRedirect->setUrl('/module/controller/add');

        return $resultRedirect;
    }

    $this->_view->loadLayout();
    $this->_view->renderLayout();
}
例如,my Symfony项目的代码:

if ($form->isSubmitted() && $form->isValid()) {
    $em = $this->getDoctrine()->getManager();

    # set non-form fields
    $category->setApproved(0);
    $category->setCreatedTs(new \DateTime());

    try {
        # this is how Symfony saves data to a table
        $em->persist($category);
        $em->flush();

        $this->addFlash('success', 'Category Submitted for Review.');
    } catch (Exception $e) {
        $this->addFlash('danger', 'Something went skew-if. Please try again.'. $e->getMessage(). '- ' .$e->getCode());
    }

    return $this->redirectToRoute('category_list');
}

我仔细研究并发现了这一点,但它没有一个关于如何实现的清晰示例。我在Magento SE上看到了一些帖子,有人建议不要使用它,因为它是一个不完整的功能。有什么替代方法/正确的方法可以做到这一点?

您可能可以使用原始SQL或DQL查询来添加数据,而无需使用ORM。@a.L是的,这可能是一种更好的方法,目前使用的是_objectManager,它似乎模仿了ORM的一些行为,但。。。很多帖子都说这是不好的做法等等。我对M2社区感到很困惑xD@treyBake在高性能/高负载/难以缓存的操作中,使用ORM被认为是一种不好的做法,因为它会给您提供更多的抽象层,这些抽象层对生产力很有好处,但对性能方面却很不利。我的问题是a)你想使用条令(ORM)吗?如果是,可以看看DBAL b)您的问题更多地是关于性能或生产力方面的良好实践?