Magento安装程序安装不可知插入

Magento安装程序安装不可知插入,magento,installation,database-agnostic,Magento,Installation,Database Agnostic,我完成了有关Magento安装资源的教程 在某种程度上,我看到它支持更多的数据库后端,但在前面提到的教程中,只描述了创建表的方法 我需要一些关于将(不可知脚本)数据插入以前创建的表的方法的参考资料/示例。您应该使用相应的模型插入数据。示例来自app/code/core/Mage/Dataflow/data/Dataflow\u setup/data-install-1.6.0.0.php: $dataflowData = array( array( 'name'

我完成了有关Magento安装资源的教程

在某种程度上,我看到它支持更多的数据库后端,但在前面提到的教程中,只描述了创建表的方法


我需要一些关于将(不可知脚本)数据插入以前创建的表的方法的参考资料/示例。

您应该使用相应的模型插入数据。示例来自
app/code/core/Mage/Dataflow/data/Dataflow\u setup/data-install-1.6.0.0.php

$dataflowData = array(
    array(
        'name'         => 'Export All Products',
        'actions_xml'  => '<action type="catalog/convert_adapter_product" method="load">\r\n    <var name="store"><![CDATA[0]]></var>\r\n</action>\r\n\r\n<action type="catalog/convert_parser_product" method="unparse">\r\n    <var name="store"><![CDATA[0]]></var>\r\n</action>\r\n\r\n<action type="dataflow/convert_mapper_column" method="map">\r\n</action>\r\n\r\n<action type="dataflow/convert_parser_csv" method="unparse">\r\n    <var name="delimiter"><![CDATA[,]]></var>\r\n    <var name="enclose"><![CDATA["]]></var>\r\n    <var name="fieldnames">true</var>\r\n</action>\r\n\r\n<action type="dataflow/convert_adapter_io" method="save">\r\n    <var name="type">file</var>\r\n    <var name="path">var/export</var>\r\n    <var name="filename"><![CDATA[export_all_products.csv]]></var>\r\n</action>\r\n\r\n',
        'gui_data'     => 'a:5:{s:4:"file";a:7:{s:4:"type";s:4:"file";s:8:"filename";s:23:"export_all_products.csv";s:4:"path";s:10:"var/export";s:4:"host";s:0:"";s:4:"user";s:0:"";s:8:"password";s:0:"";s:7:"passive";s:0:"";}s:5:"parse";a:5:{s:4:"type";s:3:"csv";s:12:"single_sheet";s:0:"";s:9:"delimiter";s:1:",";s:7:"enclose";s:1:""";s:10:"fieldnames";s:4:"true";}s:3:"map";a:3:{s:14:"only_specified";s:0:"";s:7:"product";a:2:{s:2:"db";a:0:{}s:4:"file";a:0:{}}s:8:"customer";a:2:{s:2:"db";a:0:{}s:4:"file";a:0:{}}}s:7:"product";a:1:{s:6:"filter";a:8:{s:4:"name";s:0:"";s:3:"sku";s:0:"";s:4:"type";s:1:"0";s:13:"attribute_set";s:0:"";s:5:"price";a:2:{s:4:"from";s:0:"";s:2:"to";s:0:"";}s:3:"qty";a:2:{s:4:"from";s:0:"";s:2:"to";s:0:"";}s:10:"visibility";s:1:"0";s:6:"status";s:1:"0";}}s:8:"customer";a:1:{s:6:"filter";a:10:{s:9:"firstname";s:0:"";s:8:"lastname";s:0:"";s:5:"email";s:0:"";s:5:"group";s:1:"0";s:10:"adressType";s:15:"default_billing";s:9:"telephone";s:0:"";s:8:"postcode";s:0:"";s:7:"country";s:0:"";s:6:"region";s:0:"";s:10:"created_at";a:2:{s:4:"from";s:0:"";s:2:"to";s:0:"";}}}}',
        'direction'    => 'export',
        'entity_type'  => 'product',
        'store_id'     => 0,
        'data_transfer'=> 'file'
    ),
    // ... 
);

foreach ($dataflowData as $bind) {
    Mage::getModel('dataflow/profile')->setData($bind)->save();
}
$dataflowData=array(
排列(
“名称”=>“导出所有产品”,

'actions\u xml'=>'\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n您应该使用相应的模型插入数据。示例来自
app/code/core/Mage/Dataflow/data/Dataflow\u setup/data-install-1.6.0.php

$dataflowData = array(
    array(
        'name'         => 'Export All Products',
        'actions_xml'  => '<action type="catalog/convert_adapter_product" method="load">\r\n    <var name="store"><![CDATA[0]]></var>\r\n</action>\r\n\r\n<action type="catalog/convert_parser_product" method="unparse">\r\n    <var name="store"><![CDATA[0]]></var>\r\n</action>\r\n\r\n<action type="dataflow/convert_mapper_column" method="map">\r\n</action>\r\n\r\n<action type="dataflow/convert_parser_csv" method="unparse">\r\n    <var name="delimiter"><![CDATA[,]]></var>\r\n    <var name="enclose"><![CDATA["]]></var>\r\n    <var name="fieldnames">true</var>\r\n</action>\r\n\r\n<action type="dataflow/convert_adapter_io" method="save">\r\n    <var name="type">file</var>\r\n    <var name="path">var/export</var>\r\n    <var name="filename"><![CDATA[export_all_products.csv]]></var>\r\n</action>\r\n\r\n',
        'gui_data'     => 'a:5:{s:4:"file";a:7:{s:4:"type";s:4:"file";s:8:"filename";s:23:"export_all_products.csv";s:4:"path";s:10:"var/export";s:4:"host";s:0:"";s:4:"user";s:0:"";s:8:"password";s:0:"";s:7:"passive";s:0:"";}s:5:"parse";a:5:{s:4:"type";s:3:"csv";s:12:"single_sheet";s:0:"";s:9:"delimiter";s:1:",";s:7:"enclose";s:1:""";s:10:"fieldnames";s:4:"true";}s:3:"map";a:3:{s:14:"only_specified";s:0:"";s:7:"product";a:2:{s:2:"db";a:0:{}s:4:"file";a:0:{}}s:8:"customer";a:2:{s:2:"db";a:0:{}s:4:"file";a:0:{}}}s:7:"product";a:1:{s:6:"filter";a:8:{s:4:"name";s:0:"";s:3:"sku";s:0:"";s:4:"type";s:1:"0";s:13:"attribute_set";s:0:"";s:5:"price";a:2:{s:4:"from";s:0:"";s:2:"to";s:0:"";}s:3:"qty";a:2:{s:4:"from";s:0:"";s:2:"to";s:0:"";}s:10:"visibility";s:1:"0";s:6:"status";s:1:"0";}}s:8:"customer";a:1:{s:6:"filter";a:10:{s:9:"firstname";s:0:"";s:8:"lastname";s:0:"";s:5:"email";s:0:"";s:5:"group";s:1:"0";s:10:"adressType";s:15:"default_billing";s:9:"telephone";s:0:"";s:8:"postcode";s:0:"";s:7:"country";s:0:"";s:6:"region";s:0:"";s:10:"created_at";a:2:{s:4:"from";s:0:"";s:2:"to";s:0:"";}}}}',
        'direction'    => 'export',
        'entity_type'  => 'product',
        'store_id'     => 0,
        'data_transfer'=> 'file'
    ),
    // ... 
);

foreach ($dataflowData as $bind) {
    Mage::getModel('dataflow/profile')->setData($bind)->save();
}
$dataflowData=array(
排列(
“名称”=>“导出所有产品”,
'actions\u xml'=>'\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n与所有Magento(和开源)一样,您最好的办法是看看其他开发人员,特别是Magento核心开发人员,是如何做同样的事情。下面是几个示例

#File: app/code/core/Mage/Tax/sql/tax_setup/mysql4-upgrade-0.7.2-0.7.3.php
$installer = $this;
/* @var $installer Mage_Core_Model_Resource_Setup */

$installer->startSetup();

if (!$installer->getConnection()->fetchOne("select * from {$this->getTable('tax_class')} where `class_name`='Shipping' and `class_type`='PRODUCT'")) {
    $installer->run("
        insert  into {$this->getTable('tax_class')} (`class_name`,`class_type`) values ('Shipping','PRODUCT');
    ");
}

$installer->endSetup();

您基本上是在对数据库运行原始SQL,因此您(即开发人员的责任)有责任使其具有足够的通用性,以便在各种SQL(MySQL、SQL Server、Oracle等)环境中运行

我不建议在安装资源中使用标准的Magento模型。Magento运行这些迁移脚本的上下文与模型通常运行的上下文不匹配。您可以不受影响,但如果模型假设完全启动,则在安装资源脚本中使用普通Magento模型可能会失败阿佩德·马根托系统

只要稍加搜索,你就能找到更多的例子。如果你精通命令行,试试这个

$ cd app/code/core/Mage
$ find . -type f -wholename '*/sql/*'  | xargs grep -i -r insert 
$ find . -type f -wholename '*/sql/*'  | xargs ack -i insert       #if you use ack
与所有Magento(和开源)一样,您最好的选择是看看其他开发人员,特别是Magento核心开发人员如何做同样的事情

#File: app/code/core/Mage/Tax/sql/tax_setup/mysql4-upgrade-0.7.2-0.7.3.php
$installer = $this;
/* @var $installer Mage_Core_Model_Resource_Setup */

$installer->startSetup();

if (!$installer->getConnection()->fetchOne("select * from {$this->getTable('tax_class')} where `class_name`='Shipping' and `class_type`='PRODUCT'")) {
    $installer->run("
        insert  into {$this->getTable('tax_class')} (`class_name`,`class_type`) values ('Shipping','PRODUCT');
    ");
}

$installer->endSetup();

您基本上是在对数据库运行原始SQL,因此您(即开发人员的责任)有责任使其具有足够的通用性,以便在各种SQL(MySQL、SQL Server、Oracle等)环境中运行

我不建议在安装资源中使用标准的Magento模型。Magento运行这些迁移脚本的上下文与模型通常运行的上下文不匹配。您可以不受影响,但如果模型假设完全启动,则在安装资源脚本中使用普通Magento模型可能会失败阿佩德·马根托系统

只要稍加搜索,你就能找到更多的例子。如果你精通命令行,试试这个

$ cd app/code/core/Mage
$ find . -type f -wholename '*/sql/*'  | xargs grep -i -r insert 
$ find . -type f -wholename '*/sql/*'  | xargs ack -i insert       #if you use ack

最初的问题是专门询问设置资源/迁移系统,而不是插入产品/目录数据。问题不清楚,这个答案很好,因为它强调了一个事实,即应该使用模型插入数据(这在升级脚本中完全可以)顺便说一句,如果Michael真的想粗略地插入数据,他的教程给了他解决方案:$installer->run(“SQL”);我需要在一些自定义表中插入数据(特定模块需要)但我想使用这种类型的不可知脚本,以确保与某些特定magento存储下可能使用的任何数据库管理系统的兼容性。最初的问题是专门询问设置资源/迁移系统,而不是插入产品/目录数据。问题不清楚,这个答案相当好由于它强调了模型应该用于插入数据的事实(这在升级脚本中完全可以)。顺便说一下,如果Michael真的想粗略地插入数据,他的教程给了他解决方案:$installer->run(“SQL”);我需要在一些自定义表中插入数据(特定模块需要)但我想使用这种类型的不可知脚本,以确保与某些特定magento存储下可能使用的任何数据库管理系统兼容。不确定它是否为db不可知插入。不确定它是否为db不可知插入。