在magento 2中,getModel的正确方法是什么?

时间:2015-08-13 08:49:21

标签: magento

我在Magento 2中成功制作了helloworld简单模块。现在我想从数据库中获取模型数据...所以请帮我在Magento 2中获取模型。 任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:14)

以下是在Magento 2模块中创建Model的步骤:

  1. 在问题模型的模型文件夹中创建Question.php,如下所示:

    namespace Ecom\HelloWorld\Model;
    
    class Question 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);
    }
    
    public function _construct()
    {
        $this->_init('Ecom\HelloWorld\Model\ResourceModel\Question');
    }
    }
    
  2. 在问题资源模型的ResourceModel文件夹中创建Question.php,如下所示:

    namespace Ecom\HelloWorld\Model\ResourceModel;
    
    class Question extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
    {
    public function _construct()
    {
        $this->_init('question_table_name', 'question_id');
    }
    }
    
  3. 在问题收集模型的ResourceModel / Question文件夹中创建Collection.php,如下所示:

    namespace Ecom\HelloWorld\Model\ResourceModel\Question;
    
    class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection
    {
    public function _construct()
    {
    $this->_init('Ecom\HelloWorld\Model\Question', 'Ecom\HelloWorld\Model\ResourceModel\Question');
    }
    }
    
  4. 现在您可以通过以下方式调用模型:

    $question = $this->_objectManager->create('Ecom\HelloWorld\Model\Question');
    $question->setTitle('Simple Question');
    $question->setDescription('Question Description');
    $question->save();
    

    对于设置脚本:

    有两种不同类型的安装脚本。架构安装和数据安装。模式安装用于安装数据库结构,如新表,列,关系。 数据安装或升级用于将数据添加到数据库,如设置,页面等。

    如果已经创建了Module,则需要在设置文件夹中创建“UpgradeSchema.php”文件,并添加新的数据库结构以进行更新。如果未安装module,则需要创建“InstallSchema.php”以添加新的数据库结构。

    为简化起见,在Magento 2中,您可以在模块中拥有6个不同的安装类:

        `Setup/InstallSchema` - Script that needs to run to create database schema when module installed
        `Setup/UpgradeSchema` - Script that needs to run to update or createdatabase schema when module upgraded 
        `Setup/InstallData` - Data Import when module installed
        `Setup/UpgradeData` - Data Import when module upgraded
        `Setup/Recurring` - Script run everytime when module upgrade
        `Setup/Uninstall` - Script run when Module uninstalled
    

    不再有单独的版本设置文件,每个操作只有一个类。

    完成所有更改后,您需要运行命令:php bin/magentosetup:upgrade