Π Ρ ΠΎΠΏΠΈΡΠ°Π» ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² Π² Magento 2 ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ β ΡΠ΅ΡΠ΅Π· ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ. ΠΠ±ΡΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ Π²Π΅ΡΡΠΌΠ° Π½ΠΈΠ·ΠΊΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ . ΠΠ° ΠΌΠΎΡΠΌ Π½ΠΎΡΡΠ±ΡΠΊΠ΅ Π²ΡΡ ΠΎΠ΄ΠΈΠ»ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΠ΄ΡΠΊΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠΈ Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΈΠΌΠΏΠΎΡΡΠ° ΠΏΡΠΎΠ΄ΡΠΊΡΠ° β ΠΏΡΡΠΌΠΎΠΉ Π·Π°ΠΏΠΈΡΡΡ Π² Π±Π°Π·Ρ, Π² ΠΎΠ±Ρ ΠΎΠ΄ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ² Magento 2 (ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΡΠ°Π±ΡΠΈΠΊΠΈ, ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ). ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ°Π³ΠΎΠ², ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΡ ΠΈΠΌΠΏΠΎΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ², ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄ Π»ΡΠ±ΠΎΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΏΠΎΡΠΎΠ±Π½ΡΠΉ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ MySQL.
Disclaimer: Π Magento Π΅ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΏΠΎ ΠΈ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π²Π°ΠΌ Π΅Π³ΠΎ Ρ Π²Π°ΡΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π·Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΠΈΠΌΠΏΠΎΡΡΠ°, Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΠΈΠΉΡΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΎΠΉ CSV-ΡΠ°ΠΉΠ»Π° Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΅ΡΡΡ β Π΄ΠΎΠ±ΡΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ ΠΊΠ°Ρ.

ΠΠΎΠ΄, ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠΈΠΉΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΎΠ±Π΅ΠΈΡ ΡΡΠ°ΡΠ΅ΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² Magento-ΠΌΠΎΠ΄ΡΠ»Π΅ ««. ΠΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Ρ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°Π»ΡΡ, ΡΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΊΠΎΠ΄ Π΄Π΅ΠΌΠΎ-ΠΌΠΎΠ΄ΡΠ»Ρ:
- ΠΡΠΎΠ΄ΡΠΊΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ·Π΄Π°ΡΡΡΡ, Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ.
- ΠΠ΄ΠΈΠ½ ΡΠΊΠ»Π°Π΄
- ΠΠΌΠΏΠΎΡΡΠΈΡΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ, Π±Π΅Π· ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ
- Π‘ΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π²Π΅ΡΡΠΈΠΈ 2.3
JSON Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°:
{
"sku": "MVA20D-UBV-3",
"name": "ΠΠ°Π³Π»ΡΡΠΊΠ° Π΄Π»Ρ ΠΏΠ»ΠΎΠΌΠ±ΠΈΡΠΎΠ²ΠΊΠΈ ΠΠ47-29 IEK",
"desc": "ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌ ...",
"desc_short": "ΠΠ°Π³Π»ΡΡΠΊΠ° Π΄Π»Ρ ΠΏΠ»ΠΎΠΌΠ±ΠΈΡΠΎΠ²ΠΊΠΈ ΠΠ47-29 IEK ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ...",
"price": 5.00,
"qty": 25,
"categories": ["ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΡ 1", "ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΡ 2"],
"image_path": "mva20d_ubv_3.png"
}ΠΠ±Π·ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΡΠ°ΠΏΠΎΠ² ΠΈΠΌΠΏΠΎΡΡΠ°
- ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°
- ΡΠ²ΡΠ·Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΈ web-ΡΠ°ΠΉΡΠ°
- Π±Π°Π·ΠΎΠ²ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° (EAV)
- ΠΈΠ²Π΅Π½ΡΠ°ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ (ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Π½Π° ΡΠΊΠ»Π°Π΄Π΅)
- ΠΌΠ΅Π΄ΠΈΠ° (ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ)
- ΡΠ²ΡΠ·Ρ Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠΌΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°
Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°
ΠΠ°Π·ΠΎΠ²Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² catalog_product_entity:
CREATE TABLE `catalog_product_entity` (
`entity_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Entity Id',
`attribute_set_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Attribute Set ID',
`type_id` varchar(32) NOT NULL DEFAULT 'simple' COMMENT 'Type ID',
`sku` varchar(64) DEFAULT NULL COMMENT 'SKU',
`has_options` smallint(6) NOT NULL DEFAULT '0' COMMENT 'Has Options',
`required_options` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Required Options',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Creation Time',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Update Time',
PRIMARY KEY (`entity_id`),
KEY `CATALOG_PRODUCT_ENTITY_ATTRIBUTE_SET_ID` (`attribute_set_id`),
KEY `CATALOG_PRODUCT_ENTITY_SKU` (`sku`)
)ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ΅Π΅ΡΡΡΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ²:
attribute_set_idsku
Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ:
type_idβ Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ βsimpleβ
ΠΠ»Ρ ΠΏΡΡΠΌΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² Π±Π°Π·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ DB-Π°Π΄Π°ΠΏΡΠ΅Ρ ΡΠ°ΠΌΠΎΠΉ Magento:
function create($sku, $typeId, $attrSetId)
{
/** @var MagentoFrameworkAppResourceConnection $this->resource */
/** @var MagentoFrameworkDBAdapterPdoMysql $conn */
$conn = $this->resource->getConnection();
$table = $this->resource->getTableName('catalog_product_entity');
$bind = [
'sku' => $sku,
'type_id' => $typeId,
'attribute_set_id' => $attrSetId
];
$conn->insert($table, $bind);
$result = $conn->lastInsertId($table);
return $result;
}ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Π² catalog_product_entity ΠΎΠ½ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΡΠΌ Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅, Π² Π³ΡΠΈΠ΄Π΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² (Catalog / Products).

Π‘Π²ΡΠ·Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΈ web-ΡΠ°ΠΉΡΠ°
Π‘Π²ΡΠ·Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Ρ ΡΠ°ΠΉΡΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, Π² ΠΊΠ°ΠΊΠΈΡ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°Ρ ΠΈ Π½Π° ΠΊΠ°ΠΊΠΈΡ Π²ΠΈΡΡΠΈΠ½Π°Ρ ΠΏΡΠΎΠ΄ΡΠΊΡ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½Π° ΡΡΠΎΠ½ΡΠ΅.
function linkToWebsite($prodId, $websiteId)
{
/** @var MagentoFrameworkAppResourceConnection $this->resource */
/** @var MagentoFrameworkDBAdapterPdoMysql $conn */
$conn = $this->resource->getConnection();
$table = $this->resource->getTableName('catalog_product_website');
$bind = [
'product_id' => $prodId,
'website_id' => $websiteId
];
$conn->insert($table, $bind);
}
ΠΠ°Π·ΠΎΠ²ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°
Π£ ΡΠ²Π΅ΠΆΠ΅Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΏΠΎΠΊΠ° Π½Π΅Ρ Π½ΠΈ ΠΈΠΌΠ΅Π½ΠΈ, Π½ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ. ΠΡΡ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· . ΠΠΎΡ ΡΠΏΠΈΡΠΎΠΊ Π±Π°Π·ΠΎΠ²ΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΏΡΠΎΠ΄ΡΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½Ρ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄ΡΠΊΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π»ΡΡ Π½Π° ΡΡΠΎΠ½ΡΠ΅:
namepricedescriptionshort_descriptionstatustax_class_idurl_keyvisibility
ΠΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ ΠΊ ΠΏΡΠΎΠ΄ΡΠΊΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π²ΠΎΡ ΡΠ°ΠΊ (ΠΎΠΏΡΡΠ΅Π½Ρ Π΄Π΅ΡΠ°Π»ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΈ ΡΠΈΠΏΠ° Π°ΡΡΠΈΠ±ΡΡΠ° ΠΏΠΎ Π΅Π³ΠΎ ΠΊΠΎΠ΄Ρ):
public function create($prodId, $attrCode, $attrValue)
{
$attrId = /* get attribute ID by attribute code */
$attrType = /* get attribute type [datetime|decimal|int|text|varchar]) by attribute code */
if ($attrId) {
/** @var MagentoFrameworkAppResourceConnection $this->resource */
/** @var MagentoFrameworkDBAdapterPdoMysql $conn */
$conn = $this->resource->getConnection();
$tblName = 'catalog_product_entity_' . $attrType;
$table = $this->resource->getTableName($tblName);
$bind = [
'attribute_id' => $attrId,
'entity_id' => $prodId,
/* put all attributes to default store view with id=0 (admin) */
'store_id' => 0,
'value' => $attrValue
];
$conn->insert($table, $bind);
}
}ΠΠΎ ΠΊΠΎΠ΄Ρ Π°ΡΡΠΈΠ±ΡΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ id ΠΈ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ
(datetime, decimal, int, text, varchar), Π·Π°ΡΠ΅ΠΌ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠΈΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ Π²ΠΈΡΡΠΈΠ½Ρ (store_id = 0).
ΠΠΎΡΠ»Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π²ΡΡΠ΅ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΊ ΠΏΡΠΎΠ΄ΡΠΊΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π²ΠΎΡ ΡΠ°ΠΊΠ°Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅:

ΠΠ½Π²Π΅Π½ΡΠ°ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 2.3 Π² Magento ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π° Π½Π°Π±ΠΎΡΠ° ΡΠ°Π±Π»ΠΈΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ (ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°):
cataloginventory_*: ΡΡΠ°ΡΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ°;inventory_*: Π½ΠΎΠ²Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° (MSI β Multi Source Inventory);
ΠΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π² ΠΎΠ±Π΅ ΡΡΡΡΠΊΡΡΡΡ, Ρ.ΠΊ. Π½ΠΎΠ²Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΠΏΠΎΠΊΠ° Π΅ΡΡ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠ° ΠΎΡ ΡΡΠ°ΡΠΎΠΉ (ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ
ΠΎΠΆΠ΅, ΡΡΠΎ Π΄Π»Ρ default ΡΠΊΠ»Π°Π΄Π° Π² Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠ΅ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Π° ΡΠ°Π±Π»ΠΈΡΠ° cataloginventory_stock_status Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ inventory_stock_1).
cataloginventory_
ΠΡΠΈ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠΈ Magneto 2.3 ΠΌΡ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΈΠΌΠ΅Π΅ΠΌ 2 Π·Π°ΠΏΠΈΡΠΈ Π² store_website, ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π΄Π²ΡΠΌ ΡΠ°ΠΉΡΠ°ΠΌ β Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΎΠΌΡ ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΌΡ:
website_id|code |name |sort_order|default_group_id|is_default|
----------|-----|------------|----------|----------------|----------|
0|admin|Admin | 0| 0| 0|
1|base |Main Website| 0| 1| 1|Π ΡΠ°Π±Π»ΠΈΡΠ΅ cataloginventory_stock Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π° Π·Π°ΠΏΠΈΡΡ:
stock_id|website_id|stock_name|
--------|----------|----------|
1| 0|Default |Π’.Π΅., Ρ Π½Π°Ρ Π² ΡΡΠ°ΡΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠ΅ Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Β«ΡΠΊΠ»Π°Π΄Β» (stock) ΠΈ ΠΎΠ½ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ ΠΊ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΎΠΌΡ websiteβΡ. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· Π°Π΄ΠΌΠΈΠ½ΠΊΡ Π½ΠΎΠ²ΡΡ
sources/stocks Π² MSI (Π½ΠΎΠ²ΡΡ ΡΡΡΡΠΊΡΡΡΡ) Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ
Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² cataloginventory_stock.
ΠΠ½Π²Π΅Π½ΡΠ°ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°Ρ Π² ΡΡΠ°ΡΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠ΅ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ°Ρ :
cataloginventory_stock_itemcataloginventory_stock_status
cataloginventory_stock_item
function createOldItem($prodId, $qty)
{
$isQtyDecimal = (((int)$qty) != $qty);
$isInStock = ($qty > 0);
/** @var MagentoFrameworkAppResourceConnection $this->resource */
/** @var MagentoFrameworkDBAdapterPdoMysql $conn */
$conn = $this->resource->getConnection();
$table = $this->resource->getTableName('cataloginventory_stock_item');
$bind = [
'product_id' => $prodId,
/* we use one only stock in 'cataloginventory' structure by default */
'stock_id' => 1,
'qty' => $qty,
'is_qty_decimal' => $isQtyDecimal,
'is_in_stock' => $isInStock,
/* default stock is bound to admin website (see `cataloginventory_stock`) */
'website_id' => 0
];
$conn->insert($table, $bind);
}cataloginventory_stock_status
function createOldStatus($prodId, $qty)
{
$isInStock = ($qty > 0);
/** @var MagentoFrameworkAppResourceConnection $this->resource */
/** @var MagentoFrameworkDBAdapterPdoMysql $conn */
$conn = $this->resource->getConnection();
$table = $this->resource->getTableName('cataloginventory_stock_status');
$bind = [
'product_id' => $prodId,
/* we use one only stock in 'cataloginventory' structure by default */
'stock_id' => 1,
'qty' => $qty,
'stock_status' => MagentoCatalogInventoryApiDataStockStatusInterface::STATUS_IN_STOCK,
/* default stock is bound to admin website (see `cataloginventory_stock`) */
'website_id' => 0
];
$conn->insert($table, $bind);
}inventory_
ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π½ΠΎΠ²Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΠ½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ 1 Β«ΠΈΡΡΠΎΡΠ½ΠΈΠΊΒ» (inventory_source):
source_code|name |enabled|description |latitude|longitude|country_id|...|
-----------|--------------|-------|--------------|--------|---------|----------|...|
default |Default Source| 1|Default Source|0.000000| 0.000000|US |...|ΠΈ ΠΎΠ΄ΠΈΠ½ Β«ΡΠΊΠ»Π°Π΄Β» (inventory_stock):
stock_id|name |
--------|-------------|
1|Default Stock|Β«ΠΡΡΠΎΡΠ½ΠΈΠΊΒ» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π»Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² (Π·Π°ΠΏΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΈ ΠΏΠΎΡΡΠΎΠ²ΡΠΉ Π°Π΄ΡΠ΅Ρ). Β«Π‘ΠΊΠ»Π°Π΄Β» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Β«ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ²Β» (inventory_source_stock_link)
link_id|stock_id|source_code|priority|
-------|--------|-----------|--------|
1| 1|default | 1|Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΊ ΠΊΠ°Π½Π°Π»Ρ ΠΏΡΠΎΠ΄Π°ΠΆΠΈ (inventory_stock_sales_channel)
type |code|stock_id|
-------|----|--------|
website|base| 1|Π‘ΡΠ΄Ρ ΠΏΠΎ ΡΡΡΡΠΊΡΡΡΠ΅ Π΄Π°Π½Π½ΡΡ
ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΠΏΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΏΡΠΎΠ΄Π°ΠΆ, Π½ΠΎ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ²ΡΠ·Ρ Β«stockΒ«-Β«websiteΒ» (ΡΡΡΠ»ΠΊΠ° Π½Π° web-ΡΠ°ΠΉΡ ΠΈΠ΄ΡΡ ΠΏΠΎ ΠΊΠΎΠ΄Ρ web-ΡΠ°ΠΉΡΠ° β base).
ΠΠ΄ΠΈΠ½ Β«ΡΠΊΠ»Π°Π΄Β» ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ ΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ Β«ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°ΠΌΒ«, Π° ΠΎΠ΄ΠΈΠ½ Β«ΠΈΡΡΠΎΡΠ½ΠΈΠΊΒ» β ΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ Β«ΡΠΊΠ»Π°Π΄Π°ΠΌΒ» (ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Β«ΠΌΠ½ΠΎΠ³ΠΈΠ΅-ΠΊΠΎ-ΠΌΠ½ΠΎΠ³ΠΈΠΌΒ»). ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΡΡΠ°Π²Π»ΡΡΡ defaultβΠΎΠ²ΡΠ΅ Β«ΠΈΡΡΠΎΡΠ½ΠΈΠΊΒ» ΠΈ Β«ΡΠΊΠ»Π°Π΄Β«. ΠΠ½ΠΈ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΊ Π΄ΡΡΠ³ΠΈΠΌ ΡΡΡΠ½ΠΎΡΡΡΠΌ (ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΠ΄Π° β Π²ΡΠ»Π΅ΡΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° Β«Can not save link related to Default Source or Default StockΒ«). ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎ ΡΡΡΡΠΊΡΡΡΠ΅ MSI Π² Magento 2 ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π² ΡΡΠ°ΡΡΠ΅ ««.
Π― Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ defaultβΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π²ΡΡ ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΠΈΡΡΠΎΡΠ½ΠΈΠΊ default, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ Π² ΠΊΠ°Π½Π°Π»Π΅ ΠΏΡΠΎΠ΄Π°ΠΆΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΌ Ρ web-ΡΠ°ΠΉΡΠΎΠΌ Ρ ΠΊΠΎΠ΄ΠΎΠΌ base (ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° β ΡΠΌ. store_website):
function createNewItem($sku, $qty)
{
/** @var MagentoFrameworkAppResourceConnection $this->resource */
/** @var MagentoFrameworkDBAdapterPdoMysql $conn */
$conn = $this->resource->getConnection();
$table = $this->resource->getTableName('inventory_source_item');
$bind = [
'source_code' => 'default',
'sku' => $sku,
'quantity' => $qty,
'status' => MagentoInventoryApiApiDataSourceItemInterface::STATUS_IN_STOCK
];
$conn->insert($table, $bind);
}ΠΠΎΡΠ»Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΊ ΠΏΡΠΎΠ΄ΡΠΊΡΡ Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π²ΠΎΡ ΡΠ°ΠΊΠ°Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ°:

ΠΠ΅Π΄ΠΈΠ°
ΠΡΠΈ Β«ΡΡΡΠ½ΠΎΠΌΒ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΊ ΠΏΡΠΎΠ΄ΡΠΊΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· Π°Π΄ΠΌΠΈΠ½ΠΊΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ°Π±Π»ΠΈΡΠ°Ρ :
catalog_product_entity_media_gallery: ΠΌΠ΅Π΄ΠΈΠ°-ΡΠ΅Π΅ΡΡΡ (ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ-ΡΠ°ΠΉΠ»Ρ);catalog_product_entity_media_gallery_value: ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΌΠ΅Π΄ΠΈΠ° ΠΊ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°ΠΌ ΠΈ Π²ΠΈΡΡΠΈΠ½Π°ΠΌ (Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ);catalog_product_entity_media_gallery_value_to_entity: ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΌΠ΅Π΄ΠΈΠ° ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°ΠΌ (ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎ, default ΠΌΠ΅Π΄ΠΈΠ°-ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π΄Π»Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°);catalog_product_entity_varchar: Π·Π΄Π΅ΡΡ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ ΡΠΎΠ»ΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅;
Π° ΡΠ°ΠΌΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎΡ
ΡΠ°Π½ΡΡΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ./pub/media/catalog/product/x/y/, Π³Π΄Π΅ x ΠΈ y β ΠΏΠ΅ΡΠ²Π°Ρ ΠΈ Π²ΡΠΎΡΠ°Ρ Π±ΡΠΊΠ²Ρ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π° Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΉΠ» image.png Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΎΡ
ΡΠ°Π½ΡΠ½ ΠΊΠ°ΠΊ ./pub/media/catalog/product/i/m/image.png, ΡΡΠΎΠ±Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΠΌΠΎΠ³Π»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² ΠΈΠ· ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°.
catalog_product_entity_media_gallery
Π Π΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅ΡΡΠ½Π½ΡΠΉ Π² ./pub/media/catalog/product/ ΠΌΠ΅Π΄ΠΈΠ°-ΡΠ°ΠΉΠ» (ΡΠ°ΠΌ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ):
function createMediaGallery($imgPathPrefixed)
{
$attrId = /* get attribute ID by attribute code 'media_gallery' */
/** @var MagentoFrameworkAppResourceConnection $this->resource */
/** @var MagentoFrameworkDBAdapterPdoMysql $conn */
$conn = $this->resource->getConnection();
$table = $this->resource->getTableName('catalog_product_entity_media_gallery');
$bind = [
'attribute_id' => $attrId,
'value' => $imgPathPrefixed,
/* 'image' or 'video' */
'media_type' => 'image',
'disabled' => false
];
$conn->insert($table, $bind);
$result = $conn->lastInsertId($table);
return $result;
}ΠΡΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π½ΠΎΠ²ΠΎΠΌΡ ΠΌΠ΅Π΄ΠΈΠ°-ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠΎΡ.
catalog_product_entity_media_gallery_value
Π‘Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ΅Π΄ΠΈΠ°-ΡΠ°ΠΉΠ» Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠΌ Π΄Π»Ρ default-Π²ΠΈΡΡΠΈΠ½Ρ:
function createGalleryValue($mediaId, $prodId)
{
/** @var MagentoFrameworkAppResourceConnection $this->resource */
/** @var MagentoFrameworkDBAdapterPdoMysql $conn */
$conn = $this->resource->getConnection();
$table = $this->resource->getTableName('catalog_product_entity_media_gallery_value');
$bind = [
'value_id' => $mediaId,
/* use admin store view by default */
'store_id' => 0,
'entity_id' => $prodId,
'label' => null,
/* we have one only image */
'position' => 1,
'disabled' => false
];
$conn->insert($table, $bind);
}catalog_product_entity_media_gallery_value_to_entity
Π‘Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ΅Π΄ΠΈΠ°-ΡΠ°ΠΉΠ» Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠΌ Π±Π΅Π· ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΊ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π²ΠΈΡΡΠΈΠ½Π΅. ΠΠ΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ Π½Π΅Π»ΡΠ·Ρ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π΄Π°Π½Π½ΡΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ, Π½ΠΎ Π²ΠΎΡ ΡΡΠ° ΡΠ°Π±Π»ΠΈΡΠ° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΈ Π΄Π°Π½Π½ΡΠ΅ Π² Π½Π΅Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΠΊ ΠΏΡΠΎΠ΄ΡΠΊΡΡ. ΠΠΎΡΡΠΎΠΌΡ Π²ΠΎΡ ΡΠ°ΠΊ.
function createGalleryValueToEntity($mediaId, $prodId)
{
/** @var MagentoFrameworkAppResourceConnection $this->resource */
/** @var MagentoFrameworkDBAdapterPdoMysql $conn */
$conn = $this->resource->getConnection();
$table = $this->resource->getTableName('catalog_product_entity_media_gallery_value_to_entity');
$bind = [
'value_id' => $mediaId,
'entity_id' => $prodId
];
$conn->insert($table, $bind);
}catalog_product_entity_varchar
ΠΠ΅Π΄ΠΈΠ°-ΡΠ°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΎΠ»ΡΠΌΠΈ (Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΡΠΊΠ°Π·Π°Π½ ΠΊΠΎΠ΄ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π°ΡΡΠΈΠ±ΡΡΠ°):
- Base (
image) - Small Image (
small_image) - Thumbnail (
thumbnail) - Swatch Image (
swatch_image)
ΠΡΠΈΠ²ΡΠ·ΠΊΠ° ΡΠΎΠ»Π΅ΠΉ ΠΊ ΠΌΠ΅Π΄ΠΈΠ°-ΡΠ°ΠΉΠ»Ρ ΠΊΠ°ΠΊ ΡΠ°Π· ΠΈ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π² catalog_product_entity_varchar. ΠΠΎΠ΄ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ ΠΊΠΎΠ΄Ρ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΠΠ°Π·ΠΎΠ²ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°Β«.
ΠΠΎΡΠ»Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊ ΠΏΡΠΎΠ΄ΡΠΊΡΡ Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π²ΠΎΡ ΡΠ°ΠΊ:

ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠΌ:
catalog_category_entity: ΡΠ΅Π΅ΡΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ;catalog_category_product: ΡΠ²ΡΠ·Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² ΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ;catalog_category_entity_*: Π·Π½Π°ΡΠ΅Π½ΠΈΡ EAV-Π°ΡΡΠΈΠ±ΡΡΠΎΠ²;
ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ, Π² ΠΏΡΡΡΠΎΠΌ Magento-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π² ΡΠ΅Π΅ΡΡΡΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ 2 ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ (Ρ ΡΠΎΠΊΡΠ°ΡΠΈΠ» Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ: crt β created_at, upd β updated_at):
entity_id|attribute_set_id|parent_id|crt|upd|path|position|level|children_count|
---------|----------------|---------|---|---|----|--------|-----|--------------|
1| 3| 0|...|...|1 | 0| 0| 1|
2| 3| 1|...|...|1/2 | 1| 1| 0|ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΡ Ρ id=1 ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΡΠ½Π΅ΠΌ Π²ΡΠ΅Π³ΠΎ Magento-ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π° Π½ΠΈ Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅, Π½ΠΈ Π½Π° ΡΡΠΎΠ½ΡΠ΅. ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΡ Ρ id=2 (Default Category) ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ΅ΠΉ Π΄Π»Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ° (Main Website Store), ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΈ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΡΠΌ. Admin / Stores / All Stores). ΠΡΠΈΡΡΠΌ ΡΠ°ΠΌΠ° ΠΊΠΎΡΠ½Π΅Π²Π°Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Π½Π° ΡΡΠΎΠ½ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π°, ΡΠΎΠ»ΡΠΊΠΎ Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΅ΠΌΠΎΠΉ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ Π²ΡΡ-ΡΠ°ΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠΌΠΏΠΎΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°ΠΌ, ΡΠΎ Ρ Π½Π΅ Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΡΠΌΡΡ Π·Π°ΠΏΠΈΡΡ Π² Π±Π°Π·Ρ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ, Π° Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌΠΈ ΡΠ°ΠΌΠΎΠΉ Magento (ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ). ΠΡΡΠΌΠ°Ρ Π·Π°ΠΏΠΈΡΡ Π² Π±Π°Π·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ΅ΠΉ (ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎ Π΅Ρ ΠΈΠΌΠ΅Π½ΠΈ, ΠΏΡΠΈ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΡΡΡ id ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ):
function create($prodId, $catId)
{
/** @var MagentoFrameworkAppResourceConnection $this->resource */
/** @var MagentoFrameworkDBAdapterPdoMysql $conn */
$conn = $this->resource->getConnection();
$table = $this->resource->getTableName('catalog_category_product');
$bind = [
'category_id' => $catId,
'product_id' => $prodId,
];
$conn->insert($table, $bind);
}ΠΠΎΡΠ»Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ²ΡΠ·ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠΌΠΈ Β«ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΡ 1Β» ΠΈ Β«ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΡ 2Β» Π΄Π΅ΡΠ°Π»ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅ Π²ΡΠ³Π»ΡΠ΄ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:

ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ
ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΈΠΌΠΏΠΎΡΡΠ° Π΄Π°Π½Π½ΡΡ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
- ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ
: Π²ΡΠ·ΠΎΠ² Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ
./bin/magento indexer:reindex; - ΡΠ΅Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ URLβΠΎΠ² Π΄Π»Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ²/ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ: ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ««
ΠΡΠΎΠ΄ΡΠΊΡΡ Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ:

ΠΈ Π½Π° ΡΡΠΎΠ½ΡΠ΅:

Π Π΅Π·ΡΠΌΠ΅
Π’ΠΎΡ ΠΆΠ΅ ΡΠ°ΠΌΡΠΉ Π½Π°Π±ΠΎΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² (10 ΡΡΡΠΊ), ΡΡΠΎ ΠΈ Π² ΠΏΡΠΎΡΠ»ΠΎΠΉ ΡΡΠ°ΡΡΠ΅, ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, Π½Π° ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±ΡΡΡΡΠ΅Π΅ (1 ΡΠ΅ΠΊΡΠ½Π΄Π° ΠΏΡΠΎΡΠΈΠ² 10). ΠΠ»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΠΎΠΉ ΠΎΡΠ΅Π½ΠΊΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ Π½ΡΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² β Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΡΠ΅Π½, Π° Π»ΡΡΡΠ΅ ΡΡΡΡΡ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΡΠ°ΠΊΠΎΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ΅ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ Magento (ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ), Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ (Π°ΠΊΡΠ΅Π½ΡΠΈΡΡΡ β Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ!) ΡΡΠΊΠΎΡΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π°, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ (Π°ΠΊΡΠ΅Π½ΡΠΈΡΡΡ β Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ!) ΡΠ½ΠΈΠΆΠ°ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² Π±Π°Π·Ρ.
Π ΠΈΡΠΎΠ³Π΅ Π²ΠΎΠ΄Π° ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ ΠΌΠΎΠΊΡΠΎΠΉ ΠΈ ΡΡΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠ΅ Π½Π΅ ΠΎΡΠΊΡΠΎΠ²Π΅Π½ΠΈΠ΅. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΠ΅ΠΏΠ΅ΡΡ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ ΠΈΠ³ΡΠ°ΡΡΡΡ Π΄Π°Π»ΡΡΠ΅ ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ΄Π΅Π»Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π²ΡΠ²ΠΎΠ΄Ρ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com
