Magento Setup Resources に関するこのチュートリアルを完了しました。
ある時点で、より多くのデータベース バックエンドをサポートしていることがわかりましたが、前述のチュートリアルでは、テーブルを作成する方法のみが説明されています。
以前に作成したテーブルに(不可知論者のスクリプト) データを挿入する方法に関するいくつかのリソース/例が必要です。
Magento Setup Resources に関するこのチュートリアルを完了しました。
ある時点で、より多くのデータベース バックエンドをサポートしていることがわかりましたが、前述のチュートリアルでは、テーブルを作成する方法のみが説明されています。
以前に作成したテーブルに(不可知論者のスクリプト) データを挿入する方法に関するいくつかのリソース/例が必要です。
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();
...
#File: app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.8.29-0.9.0.php
$installer->getConnection()->insert($installer->getTable('sales_flat_quote'), $quoteData);
基本的にはデータベースに対して生の SQL を実行しているので、さまざまな SQL (MySQL、SQL Server、Oracle など) 環境で実行できるように十分に汎用性を維持するのは開発者の責任です。
セットアップ リソースで標準の Magento モデルを使用することはお勧めしません。Magento がこれらの移行スクリプトを実行するコンテキストは、モデルが通常実行されるコンテキストと一致しません。それを回避できる場合がありますが、セットアップ リソース スクリプトで通常の Magento モデルを使用すると、モデルが 1完全にブートストラップされた 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
データを挿入するには、対応するモデルを使用する必要があります。からの例app/code/core/Mage/Dataflow/data/dataflow_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();
}