【问题标题】:How to save data to custom table using custom model in magento2如何使用magento2中的自定义模型将数据保存到自定义表
【发布时间】:2017-02-12 04:37:55
【问题描述】:

我有一个自定义表,我也为它编写了一个自定义模型,但我无法理解如何执行类似Mage::getModel('')->setData() 的操作。我遵循了所需的结构,创建了模型类并指定了资源模型并定义了集合类,我可以在管理网格中检索数据。但是,我仍然无法理解如何将我的模型用于setData()getData()。这是我的控制器,我正在对其进行 AJAX 调用,并且我想将我的数据保存到我的自定义表中。

Rent.php

<?php

namespace Mofosys\Fastcure\Controller\Index;

use Magento\Framework\Controller\ResultFactory;
use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Vendor\Module\Model\ModuleFactory;

class Rent extends Action {

    protected $request;
    protected $_moduleFactory;

    public function __construct(Context $context, moduleFactory $moduleFactory) {
        $this->_moduleFactory = $moduleFactory;
        parent::__construct($context);
    }

    public function execute() {
        $model = $this->_moduleFactory->create();
        $data = $this->getRequest()->getPost();
        $model->setName($data['name']);
        $resultJson = $this->resultFactory->create(ResultFactory::TYPE_JSON);
        $resultJson->setData($data['name']);
        return $resultJson;
    }
}

我的模型结构如下:

|-Model |-ResourceModel | |-Module | | |-Collection.php | |-Module.php |-Module.php

现在,我无法理解如何使用我的自定义模型将这些数据从我的控制器插入到表中。

Module/Model/Module.php

<?php
namespace Vendor\Module\Model;

use Magento\Framework\Exception\LocalizedException as CoreException;

class Fastcure extends \Magento\Framework\Model\AbstractModel {

    public function _construct() {
        $this->_init('Vendor\Module\Model\ResourceModel\Module');
    }

    public function getName() {
        return $this->getData(self::name);
    }

    public function setName($name) {
        return $this->setData(self::name, $name);
    }
}

所有这些,似乎都不起作用,请大家帮帮我。

【问题讨论】:

    标签: php xml magento magento2


    【解决方案1】:
    |-Controller 
        |-Index
            |-Rent.php
    |-Model
       |-ResourceModel
       |    |-Module
       |    |    |-Collection.php
       |    |-Module.php
       |-Module.php
    

    --------控制器代码Rent.php-----------

    <?php 
    namespace Mofosys\Fastcure\Controller\Index;
    use Magento\Framework\App\Request\DataPersistorInterface;
    use Magento\Framework\App\ObjectManager;
    class Rent extends \Magento\Framework\App\Action\Action
    {
    
        public function execute()
        { 
    
            $data = $this->getRequest()->getPost();
    
            $model->setName($data['name']);
    
            $model = $objectManager->create('Mofosys\Fastcure\Model\Module');
    
            $model->setData('itemname', $data['name']);  
    
            $msg =""; 
    
            if($data != ''){ 
                $model->save(); 
                $msg = 'saved successfully';
            }else{ 
                 $msg = 'not saved';  
            } 
            echo $msg;
        }
    
    }  
    

    --------型号代码 Module.php---------- -----

    <?php
    
    namespace Mofosys\Fastcure\Model;
    
    use Magento\Framework\Phrase;
    
    class Module extends \Magento\Framework\Model\AbstractModel
    {
    
        public function __construct(
            \Magento\Framework\Model\Context $context,
            \Magento\Framework\Registry $registry,
            \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
            \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
            array $data = []
            )
            {
                parent::__construct($context, $registry, $resource, $resourceCollection, $data);
            }
            protected function _construct()
            { 
                $this->_init('Mofosys\Fastcure\Model\ResourceModel\Module');
            } 
    }
    

    【讨论】:

    • 该指南非常有用,并使用它向我的数据库添加自定义表。但现在我意识到我需要另一张桌子。我是否必须从头再来,但现在是Model\ResourceModel-2?我所知道的是,我需要一个新的 Collection、InstallData 和 InstallSchema。
    猜你喜欢
    • 1970-01-01
    • 2022-07-12
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 2021-02-19
    • 2020-09-28
    相关资源
    最近更新 更多