系统学习magento二次开发,推荐小册:《Magento中文全栈二次开发 》
本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。
在Magento 2中,可以使用声明式模式来定义和操作数据库模式。这种方式不需要编写SQL代码,而是通过在XML文件中定义模式来实现。以下是在Magento 2中使用声明式模式的示例:
在模块的Setup目录下创建一个名为InstallSchema.php的文件,用于定义模式。以下是一个示例文件:
<?php namespace Vendor\ModuleName\Setup; use Magento\Framework\Setup\InstallSchemaInterface; use Magento\Framework\Setup\ModuleContextInterface; use Magento\Framework\Setup\SchemaSetupInterface; class InstallSchema implements InstallSchemaInterface { public function install(SchemaSetupInterface $setup, ModuleContextInterface $context) { $setup->startSetup(); $table = $setup->getConnection()->newTable( $setup->getTable('my_custom_table') )->addColumn( 'id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['identity' => true, 'unsigned' => true, 'nullable' => false, 'primary' => true], 'ID' )->addColumn( 'name', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, ['nullable' => false], 'Name' )->addColumn( 'description', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, ['nullable' => false], 'Description' )->setComment( 'My Custom Table' ); $setup->getConnection()->createTable($table); $setup->endSetup(); } }
上面的代码创建了一个名为"My Custom Table"的新表,其中包含一个ID列、一个名为"Name"的文本列和一个名为"Description"的文本列。
在代码中访问新表。可以使用Magento的数据库注入器来操作新表。以下是一个示例:
<?php namespace Vendor\ModuleName\Model; use Magento\Framework\App\ResourceConnection; class MyModel { /** * @var ResourceConnection */ private $resourceConnection; public function __construct(ResourceConnection $resourceConnection) { $this->resourceConnection = $resourceConnection; } public function getAllItems() { $connection = $this->resourceConnection->getConnection(); $tableName = $this->resourceConnection->getTableName('my_custom_table'); $select = $connection->select()->from($tableName); return $connection->fetchAll($select); } }
上面的代码演示了如何从"My Custom Table"表获取所有记录。它使用了Magento的ResourceConnection类来获取数据库连接和表名。然后它创建了一个查询,使用fetchAll方法执行查询并返回结果。