╨Т
Disclaimer: рдореИрдЧреЗрдВрдЯреЛ рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ
рджреЛрдиреЛрдВ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХреЛ 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"
}
рдЖрдпрд╛рдд рдХреЗ рдореБрдЦреНрдп рдЪрд░рдгреЛрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди
- рдЙрддреНрдкрд╛рдж рдХрд╛ рдкрдВрдЬреАрдХрд░рдг рд╣реА
- рдЙрддреНрдкрд╛рдж рдФрд░ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз
- рдмреБрдирд┐рдпрд╛рджреА рдЙрддреНрдкрд╛рдж рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ (рдИрдПрд╡реА)
- рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдбреЗрдЯрд╛ (рд╕реНрдЯреЙрдХ рдореЗрдВ рдЙрддреНрдкрд╛рдж рдХреА рдорд╛рддреНрд░рд╛)
- рдореАрдбрд┐рдпрд╛ (рдЪрд┐рддреНрд░)
- рдХреИрдЯрд▓реЙрдЧ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдмрдВрдз
рдЙрддреНрдкрд╛рдж рдкрдВрдЬреАрдХрд░рдг
рдЙрддреНрдкрд╛рдж рдХреА рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ 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_id
sku
рдЕрддрд┐рд░рд┐рдХреНрдд:
type_id
тАФ рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ 'рд╕рд░рд▓' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рд╕реАрдзреЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ Magento рдХреЗ DB рдПрдбрд╛рдкреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдБ:
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
рдпрд╣ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ, рдЙрддреНрдкрд╛рдж рдЧреНрд░рд┐рдб рдореЗрдВ рджреГрд╢реНрдпрдорд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдХреИрдЯрд▓реЙрдЧ/рдЙрддреНрдкрд╛рдж).
рдЙрддреНрдкрд╛рдж рдФрд░ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз
рд╕рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдЙрддреНрдкрд╛рдж рдХрд╛ рдЬреБрдбрд╝рд╛рд╡ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрддреНрдкрд╛рдж рдХрд┐рди рджреБрдХрд╛рдиреЛрдВ рдФрд░ рдбрд┐рд╕реНрдкреНрд▓реЗ рдкрд░ рд╕рд╛рдордиреЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред
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);
}
рдореВрд▓ рдЙрддреНрдкрд╛рдж рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ
рдирдП рдкрдВрдЬреАрдХреГрдд рдЙрддреНрдкрд╛рдж рдХрд╛ рдЕрднреА рддрдХ рдХреЛрдИ рдирд╛рдо рдпрд╛ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рдм рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
name
price
description
short_description
status
tax_class_id
url_key
visibility
рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрддреНрдкрд╛рдж рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИ (рдЗрд╕рдХреЗ рдХреЛрдб рд╕реЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рд╡рд░рдг рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ):
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);
}
}
рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЗрд╕рдХреА рдЖрдИрдбреА рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (datetime
, decimal
, int
, text
, varchar
), рдлрд┐рд░ рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рд╡рд┐рдВрдбреЛ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЛ рдЙрдкрдпреБрдХреНрдд рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд▓рд┐рдЦреЗрдВ (store_id = 0
).
рдЙрддреНрдкрд╛рдж рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдпрд╣ рдЪрд┐рддреНрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ рдорд┐рд▓реЗрдЧрд╛:
рдЗрдиреНрд╡реЗрдВрдЯрд░реА рдбреЗрдЯрд╛
рдореИрдЧреЗрдВрдЯреЛ рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг 2.3 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рджреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕реЗрдЯ рд╣реИрдВ рдЬреЛ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдЬрд╛рдирдХрд╛рд░реА (рдЙрддреНрдкрд╛рдж рдорд╛рддреНрд░рд╛) рдХрд╛ рднрдВрдбрд╛рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ:
cataloginventory_*
: рдкреБрд░рд╛рдиреА рд╕рдВрд░рдЪрдирд╛;inventory_*
: рдирдИ рд╕рдВрд░рдЪрдирд╛ (рдПрдордПрд╕рдЖрдИ - рдорд▓реНрдЯреА рд╕реЛрд░реНрд╕ рдЗрдиреНрд╡реЗрдВрдЯрд░реА);
рдЖрдкрдХреЛ рджреЛрдиреЛрдВ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдирдИ рд╕рдВрд░рдЪрдирд╛ рдЕрднреА рддрдХ рдкреБрд░рд╛рдиреА рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реНрд╡рддрдВрддреНрд░ рдирд╣реАрдВ рд╣реИ (рдЗрд╕рдХреА рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐)ред default
рдирдИ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЧреЛрджрд╛рдо рдореЗрдВ рдПрдХ рдЯреЗрдмрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИ cataloginventory_stock_status
рдЬреИрд╕рд╛ inventory_stock_1
).
рдХреИрдЯрд▓реЙрдЧ рд╕реВрдЪреА_
рдореИрдЧреНрдиреЗрдЯреЛ 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
) рдФрд░ рдпрд╣ рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирдП рдЬреЛрдбрд╝реЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ sources
/stocks
рдПрдордПрд╕рдЖрдИ (рдирдИ рд╕рдВрд░рдЪрдирд╛) рдореЗрдВ рдирдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ cataloginventory_stock
.
рдкреБрд░рд╛рдиреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрдиреНрд╡реЗрдВрдЯрд░реА рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
cataloginventory_stock_item
cataloginventory_stock_status
рдХреИрдЯрд▓реЙрдЧрдЗрдиреНрд╡реЗрдВрдЯрд░реА_рд╕реНрдЯреЙрдХ_рдЖрдЗрдЯрдо
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);
}
рдХреИрдЯрд▓реЙрдЧрдЗрдиреНрд╡реЗрдВрдЯрд░реА_рд╕реНрдЯреЙрдХ_рд╕реНрдЯреЗрдЯрд╕
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);
}
рднрдВрдбрд╛рд░_
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдирдИ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ 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|
рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд┐рдХреНрд░реА рдЪреИрдирд▓ рдорд╛рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдХрдиреЗрдХреНрд╢рди "рд╕реНрдЯреЙрдХ"-"рд╡реЗрдмрд╕рд╛рдЗрдЯ "(рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛ рд▓рд┐рдВрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЛрдб рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ - base
).
рдПрдХ "рдЧреЛрджрд╛рдо"рдХрдИ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ"рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ"рдФрд░ рдПрдХ "рд╕реНрд░реЛрдд" - рдХреБрдЫ рдХреЗ рд▓рд┐рдП "рдЧреЛрджрд╛рдореЛрдВ"(рдЕрдиреЗрдХ-рд╕реЗ-рдЕрдиреЗрдХ рд╕рдВрдмрдВрдз)ред рдЕрдкрд╡рд╛рдж рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИрдВ"рд╕реНрд░реЛрдд"рдФрд░"рдЧреЛрджрд╛рдо". рд╡реЗ рдЕрдиреНрдп рд╕рдВрд╕реНрдерд╛рдУрдВ рд╕реЗ рджреЛрдмрд╛рд░рд╛ рдЬреБрдбрд╝реЗ рдирд╣реАрдВ рд╣реИрдВ (рдХреЛрдб рд╕реНрддрд░ рдкрд░ рд╕реАрдорд╛ - рддреНрд░реБрдЯрд┐ "рдбрд┐рдлреЙрд▓реНрдЯ рд╕реЛрд░реНрд╕ рдпрд╛ рдбрд┐рдлреЙрд▓реНрдЯ рд╕реНрдЯреЙрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд▓рд┐рдВрдХ рдХреЛ рд╕реЗрд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛"). Magento 2 рдореЗрдВ MSI рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рд▓реЗрдЦ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ "
рдореИрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ рдФрд░ рд╕рднреА рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕реНрд░реЛрдд рдореЗрдВ рдЬреЛрдбрд╝реВрдВрдЧрд╛ default
, рдЬреЛ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдЬреБрдбрд╝реЗ рдмрд┐рдХреНрд░реА рдЪреИрдирд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ 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
: рдореАрдбрд┐рдпрд╛ рдХреЛ рдХреЗрд╡рд▓ рдЙрддреНрдкрд╛рджреЛрдВ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ (рд╕рдВрднрд╡рддрдГ рдЙрддреНрдкрд╛рдж рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдореАрдбрд┐рдпрд╛ рд╕рд╛рдордЧреНрд░реА);catalog_product_entity_varchar
: рд╡реЗ рднреВрдорд┐рдХрд╛рдПрдБ рдЬрд┐рдирдореЗрдВ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣рд╛рдБ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ;
рдФрд░ рдЫрд╡рд┐рдпрд╛рдБ рд╕реНрд╡рдпрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рд╣реЗрдЬреА рдЬрд╛рддреА рд╣реИрдВ ./pub/media/catalog/product/x/y/
рдЬрд╣рд╛рдВ x
╨╕ y
- рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХрд╛ рдкрд╣рд▓рд╛ рдФрд░ рджреВрд╕рд░рд╛ рдЕрдХреНрд╖рд░ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ image.png
рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ./pub/media/catalog/product/i/m/image.png
, рддрд╛рдХрд┐ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреИрдЯрд▓реЙрдЧ рд╕реЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╕рдордп рдЗрд╕реЗ рдПрдХ рдЫрд╡рд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗред
рдХреИрдЯрд▓реЙрдЧ_рдЙрддреНрдкрд╛рдж_рдЗрдХрд╛рдИ_рдореАрдбрд┐рдпрд╛_рдЧреИрд▓рд░реА
рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ ./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;
}
рдкрдВрдЬреАрдХреГрдд рд╣реЛрдиреЗ рдкрд░, рдПрдХ рдирдИ рдореАрдбрд┐рдпрд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╕реМрдВрдкрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреИрдЯрд▓реЙрдЧ_рдЙрддреНрдкрд╛рдж_рдЗрдХрд╛рдИ_рдореАрдбрд┐рдпрд╛_рдЧреИрд▓рд░реА_рдореВрд▓реНрдп
рд╣рдо рдкрдВрдЬреАрдХреГрдд рдореАрдбрд┐рдпрд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдЯреЛрд░рдлреНрд░рдВрдЯ рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рдЙрддреНрдкрд╛рдж рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
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);
}
рдХреИрдЯрд▓реЙрдЧ_рдкреНрд░реЛрдбрдХреНрдЯ_рдПрдВрдЯрд┐рдЯреА_рдореАрдбрд┐рдпрд╛_рдЧреИрд▓рд░реА_рд╡реИрд▓реНрдпреВ_рдЯреВ_рдПрдВрдЯрд┐рдЯреА
рд╣рдо рдкрдВрдЬреАрдХреГрдд рдореАрдбрд┐рдпрд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрд┐рд╕реА рднреА рд╕реНрдЯреЛрд░рдлреНрд░рдВрдЯ рд╕реЗ рдмрдВрдзреЗ рдмрд┐рдирд╛ рд╕рдВрдмрдВрдзрд┐рдд рдЙрддреНрдкрд╛рдж рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд┐рдЫрд▓реА рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рдЕрд╕рдВрднрд╡ рдХреНрдпреЛрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рддрд╛рд▓рд┐рдХрд╛ рдореМрдЬреВрдж рд╣реИ рдФрд░ рдЬрдм рдЙрддреНрдкрд╛рдж рдореЗрдВ рдХреЛрдИ рдЪрд┐рддреНрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдбреЗрдЯрд╛ рдЗрд╕рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рдпрд╣ рдмрд╛рдд рд╣реИред
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);
}
рдХреИрдЯрд▓реЙрдЧ_рдкреНрд░реЛрдбрдХреНрдЯ_рдПрдВрдЯрд┐рдЯреА_рд╡рд░реНрдХрд░
рдПрдХ рдореАрдбрд┐рдпрд╛ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛрдб рдХреЛрд╖реНрдардХ рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ):
- рдЖрдзрд╛рд░(
image
) - рдЫреЛрдЯреА рдЫрд╡рд┐ (
small_image
) - рдердВрдмрдиреЗрд▓ (
thumbnail
) - рдирдореВрдирд╛ рдЫрд╡рд┐ (
swatch_image
)
рдХрд┐рд╕реА рдореАрдбрд┐рдпрд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рд▓рд┐рдВрдХ рдХрд░рдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИ catalog_product_entity_varchar
. рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛрдб " рдореЗрдВ рдХреЛрдб рдХреЗ рд╕рдорд╛рди рд╣реИрдореВрд▓ рдЙрддреНрдкрд╛рдж рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ"ред
рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ рдЙрддреНрдкрд╛рдж рдореЗрдВ рдПрдХ рдЫрд╡рд┐ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
рд╢реНрд░реЗрдгрд┐рдпрд╛рдБ
рд╢реНрд░реЗрдгреА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдбреЗрдЯрд╛ рд╡рд╛рд▓реА рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛рдПрдБ:
catalog_category_entity
: рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХрд╛ рд░рдЬрд┐рд╕реНрдЯрд░;catalog_category_product
: рдЙрддреНрдкрд╛рджреЛрдВ рдФрд░ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз;catalog_category_entity_*
: рдИрдПрд╡реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рди;
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдПрдХ рдЦрд╛рд▓реА рдореИрдЧреЗрдВрдЯреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рд╢реНрд░реЗрдгреА рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ 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|
рдЖрдИрдбреА=1 рд╡рд╛рд▓реА рд╢реНрд░реЗрдгреА рд╕рдВрдкреВрд░реНрдг рдореИрдЧреЗрдВрдЯреЛ рдХреИрдЯрд▓реЙрдЧ рдХрд╛ рдореВрд▓ рд╣реИ рдФрд░ рдпрд╣ рди рддреЛ рдПрдбрдорд┐рди рдкреИрдирд▓ рдореЗрдВ рдФрд░ рди рд╣реА рдлреНрд░рдВрдЯ рдкреЗрдЬ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рдЖрдИрдбреА=2 рд╡рд╛рд▓реА рд╢реНрд░реЗрдгреА (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реНрд░реЗрдгреА) рдореБрдЦреНрдп рд╕рд╛рдЗрдЯ рдХреЗ рдореБрдЦреНрдп рд╕реНрдЯреЛрд░ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╢реНрд░реЗрдгреА рд╣реИ (рдореБрдЦреНрдп рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реНрдЯреЛрд░) рддрдм рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рджреЗрдЦреЗрдВ)ред рдПрдбрдорд┐рди/рд╕реНрдЯреЛрд░/рд╕рднреА рд╕реНрдЯреЛрд░). рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдЯреЛрд░ рдХреА рдореВрд▓ рд╢реНрд░реЗрдгреА рднреА рд╕рд╛рдордиреЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдЙрд╕рдХреА рдЙрдкрд╢реНрд░реЗрдгрд┐рдпрд╛рдБ рд╣реА рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рдЪреВрдБрдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рд╡рд┐рд╖рдп рдЕрднреА рднреА рдЙрддреНрдкрд╛рджреЛрдВ рдкрд░ рдбреЗрдЯрд╛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реИ, рдореИрдВ рд╢реНрд░реЗрдгрд┐рдпрд╛рдВ рдмрдирд╛рддреЗ рд╕рдордп рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реАрдзреЗ рдкреНрд░рд╡реЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдмрд▓реНрдХрд┐ рдореИрдЧреЗрдВрдЯреЛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХрдХреНрд╖рд╛рдУрдВ (рдореЙрдбрд▓ рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реАрдзреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЖрдпрд╛рддрд┐рдд рдЙрддреНрдкрд╛рдж рдХреЛ рдХрд┐рд╕реА рд╢реНрд░реЗрдгреА рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╢реНрд░реЗрдгреА рдХрд╛ рдЙрд╕рдХреЗ рдирд╛рдо рд╕реЗ рдорд┐рд▓рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╢реНрд░реЗрдгреА рдЖрдИрдбреА рдорд┐рд▓рд╛рди рдХреЗ рджреМрд░рд╛рди рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИ):
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 рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЯреВрд▓ (рдореЙрдбрд▓ рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА) рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ (рдореИрдВ рдЬреЛрд░ рджреЗрддрд╛ рд╣реВрдВ - рдмрд╣реБрдд!) рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдПрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ (рдореИрдВ рдЬреЛрд░ рджреЗрддрд╛ рд╣реВрдВ - рдмрд╣реБрдд!) рдЙрд╕ рдЧрддрд┐ рдХреЛ рдХрдо рдХрд░реЗрдВ рдЬрд┐рд╕ рдкрд░ рдбреЗрдЯрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЖрддрд╛ рд╣реИред
рдирддреАрдЬрд╛ рдпрд╣ рд╣реБрдЖ рдХрд┐ рдкрд╛рдиреА рдЧреАрд▓рд╛ рдирд┐рдХрд▓рд╛ рдФрд░ рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдпреЛрджреНрдШрд╛рдЯрди рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдм рдореЗрд░реЗ рдкрд╛рд╕ рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИ рдФрд░ рд╢рд╛рдпрдж рдореИрдВ рдХреБрдЫ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдкрд░ рдкрд╣реБрдБрдЪ рд╕рдХрддрд╛ рд╣реВрдБред
рд╕реНрд░реЛрдд: www.habr.com