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

Nik*_*iks 4 magento

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

Pan*_*eek 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');
    }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. Question.php在问题资源模型的ResourceModel文件夹中创建如下:

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

    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');
    }
    }
    
    Run Code Online (Sandbox Code Playgroud)

现在,您可以通过以下方式调用模型:

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

对于设置脚本:

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

如果已经创建了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
Run Code Online (Sandbox Code Playgroud)

没有单独的版本设置文件,每个操作只有一个类.

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