Magento 2: แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜

ะ’ แƒฌแƒ˜แƒœแƒ แƒกแƒขแƒแƒขแƒ˜แƒ แƒ›แƒ” แƒแƒฆแƒ•แƒฌแƒ”แƒ แƒ” Magento 2-แƒจแƒ˜ แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒแƒขแƒแƒœแƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ’แƒ–แƒ˜แƒ— - แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒกแƒแƒชแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—. แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ›แƒ”แƒ—แƒแƒ“แƒก แƒแƒฅแƒ•แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒ“แƒแƒ‘แƒแƒšแƒ˜ แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ”. แƒฉแƒ”แƒ›แƒ˜ แƒšแƒ”แƒžแƒขแƒแƒžแƒ˜ แƒฌแƒแƒ›แƒจแƒ˜ แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— แƒ”แƒ แƒ— แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒก แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ“แƒ. แƒแƒ› แƒ’แƒแƒ’แƒ แƒซแƒ”แƒšแƒ”แƒ‘แƒแƒจแƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ• แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒก แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜แƒก แƒแƒšแƒขแƒ”แƒ แƒœแƒแƒขแƒ˜แƒฃแƒš แƒ’แƒ–แƒแƒก - แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ แƒ˜ แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒ—, แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ Magento 2 แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ”แƒ‘แƒ˜แƒก (แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜, แƒฅแƒแƒ แƒฎแƒœแƒ”แƒ‘แƒ˜, แƒกแƒแƒชแƒแƒ•แƒ˜) แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒก แƒแƒ•แƒšแƒ˜แƒ—. แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜แƒก แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜แƒก แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ›แƒแƒ แƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒงแƒแƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒœแƒแƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ MySQL-แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ.

แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒ•แƒ˜แƒก แƒ’แƒแƒœแƒแƒชแƒฎแƒแƒ“แƒ˜: แƒ›แƒแƒ’แƒ”แƒœแƒขแƒแƒก แƒแƒฅแƒ•แƒก แƒ›แƒ–แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜ แƒ“แƒ, แƒกแƒแƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ“, แƒ”แƒก แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก. แƒ—แƒฃแƒ›แƒชแƒ, แƒ—แƒฃ แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒฃแƒคแƒ แƒ แƒกแƒ แƒฃแƒšแƒงแƒแƒคแƒ˜แƒšแƒ˜ แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ˜ แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ–แƒ”, แƒแƒ  แƒจแƒ”แƒ›แƒแƒ˜แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ CSV แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ›แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒ˜แƒ— แƒ˜แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒช แƒ’แƒแƒฅแƒ•แƒ—, แƒ™แƒ”แƒ—แƒ˜แƒšแƒ˜ แƒ˜แƒงแƒแƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ แƒ™แƒแƒขแƒแƒจแƒ˜.

Magento 2: แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜

แƒแƒ แƒ˜แƒ•แƒ” แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒ“แƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒ›แƒแƒ’แƒ”แƒœแƒขแƒแƒก แƒ›แƒแƒ“แƒฃแƒšแƒจแƒ˜ "flancer32/mage2_ext_demo_import". แƒแƒฅ แƒแƒ แƒ˜แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒ•แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒ” แƒ›แƒ˜แƒ•แƒงแƒ”แƒ•แƒ˜ แƒ“แƒ”แƒ›แƒ แƒ›แƒแƒ“แƒฃแƒšแƒ˜แƒก แƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒแƒกแƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒ‘แƒšแƒแƒ“:

  • แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ˜ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒ“แƒ แƒแƒ  แƒ’แƒแƒœแƒแƒฎแƒšแƒ“แƒ”แƒ‘แƒ.
  • แƒ”แƒ แƒ—แƒ˜ แƒกแƒแƒฌแƒงแƒแƒ‘แƒ˜
  • แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ™แƒแƒขแƒ”แƒ’แƒแƒ แƒ˜แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜, แƒ›แƒแƒ—แƒ˜ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”
  • แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ”แƒกแƒแƒ‘แƒแƒ›แƒ”แƒ‘แƒ 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"
}

แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜แƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒ”แƒขแƒแƒžแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒฎแƒ˜แƒšแƒ•แƒ

  • แƒ—แƒแƒ•แƒแƒ“ แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒก แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒ
  • แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜ แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒกแƒ แƒ“แƒ แƒ•แƒ”แƒ‘แƒกแƒแƒ˜แƒขแƒก แƒจแƒแƒ แƒ˜แƒก
  • แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒแƒขแƒ แƒ˜แƒ‘แƒฃแƒขแƒ”แƒ‘แƒ˜ (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_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 แƒ˜แƒก แƒฎแƒ˜แƒšแƒฃแƒšแƒ˜ แƒฎแƒ“แƒ”แƒ‘แƒ แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒฃแƒš แƒžแƒแƒœแƒ”แƒšแƒจแƒ˜, แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒก แƒฅแƒกแƒ”แƒšแƒจแƒ˜ (แƒ™แƒแƒขแƒแƒšแƒแƒ’แƒ˜/แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ˜).

Magento 2: แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜

แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒกแƒ แƒ“แƒ แƒ•แƒ”แƒ‘แƒกแƒแƒ˜แƒขแƒก แƒจแƒแƒ แƒ˜แƒก แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒแƒ‘แƒ

แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒก แƒกแƒแƒ˜แƒขแƒ—แƒแƒœ แƒแƒกแƒแƒชแƒ˜แƒแƒชแƒ˜แƒ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก, แƒ แƒแƒ›แƒ”แƒš แƒ›แƒแƒฆแƒแƒ–แƒ˜แƒ”แƒ‘แƒจแƒ˜ แƒ“แƒ แƒ’แƒแƒ›แƒแƒคแƒ”แƒœแƒ”แƒ‘แƒจแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒฌแƒ˜แƒœแƒ แƒ›แƒฎแƒแƒ แƒ”แƒก.

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);
}

Magento 2: แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜

แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒแƒขแƒ แƒ˜แƒ‘แƒฃแƒขแƒ”แƒ‘แƒ˜

แƒแƒฎแƒšแƒแƒ“ แƒ“แƒแƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒก แƒฏแƒ”แƒ  แƒแƒ  แƒแƒฅแƒ•แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ แƒแƒœ แƒแƒฆแƒฌแƒ”แƒ แƒ. แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ™แƒ”แƒ—แƒ“แƒ”แƒ‘แƒ แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— EAV แƒแƒขแƒ แƒ˜แƒ‘แƒฃแƒขแƒ”แƒ‘แƒ˜. แƒแƒฅ แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒแƒขแƒ แƒ˜แƒ‘แƒฃแƒขแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜ แƒกแƒฌแƒแƒ แƒแƒ“ แƒ˜แƒงแƒแƒก แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜ แƒฌแƒ˜แƒœแƒ แƒ›แƒฎแƒแƒ แƒ”แƒก:

  • 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);
    }
}

แƒแƒขแƒ แƒ˜แƒ‘แƒฃแƒขแƒ˜แƒก แƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒœแƒ•แƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒ— แƒ›แƒ˜แƒก ID-แƒก แƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒขแƒ˜แƒžแƒก (datetime, decimal, int, text, varchar), แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฉแƒแƒฌแƒ”แƒ แƒ”แƒ— แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒคแƒแƒœแƒฏแƒ แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒจแƒ˜ (store_id = 0).

แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ–แƒ” แƒ–แƒ”แƒ›แƒแƒแƒฆแƒœแƒ˜แƒจแƒœแƒฃแƒšแƒ˜ แƒแƒขแƒ แƒ˜แƒ‘แƒฃแƒขแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ—แƒฅแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒแƒ› แƒกแƒฃแƒ แƒแƒ—แƒก แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒฃแƒš แƒžแƒแƒœแƒ”แƒšแƒจแƒ˜:

Magento 2: แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜

แƒ˜แƒœแƒ•แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜

Magento-แƒจแƒ˜ 2.3 แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒ“แƒแƒœ แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒฃแƒšแƒ˜, แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒแƒ แƒ˜ แƒžแƒแƒ แƒแƒšแƒ”แƒšแƒฃแƒ แƒ˜ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ”แƒœ แƒ˜แƒœแƒ•แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒœแƒแƒฎแƒ•แƒแƒก (แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ):

  • cataloginventory_*: แƒซแƒ•แƒ”แƒšแƒ˜ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ;
  • inventory_*: แƒแƒฎแƒแƒšแƒ˜ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ (MSI - Multi Source Inventory);

แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ›แƒแƒขแƒแƒ— แƒ˜แƒœแƒ•แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒแƒ แƒ˜แƒ•แƒ” แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒแƒก, แƒ แƒแƒ“แƒ’แƒแƒœ แƒแƒฎแƒแƒšแƒ˜ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ แƒฏแƒ”แƒ  แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒ แƒฃแƒšแƒ˜แƒแƒ“ แƒ“แƒแƒ›แƒแƒฃแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒซแƒ•แƒ”แƒšแƒ˜แƒกแƒ’แƒแƒœ (แƒซแƒแƒšแƒ˜แƒแƒœ แƒกแƒแƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ, แƒ แƒแƒ› แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก default แƒกแƒแƒฌแƒงแƒแƒ‘แƒ˜ แƒแƒฎแƒแƒš แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒแƒจแƒ˜ แƒฉแƒแƒ แƒ—แƒฃแƒšแƒ˜แƒ แƒ›แƒแƒ’แƒ˜แƒ“แƒ cataloginventory_stock_status แƒ แƒแƒ’แƒแƒ แƒช inventory_stock_1).

แƒ™แƒแƒขแƒแƒšแƒแƒ’แƒ˜แƒก แƒ˜แƒœแƒ•แƒ”แƒœแƒขแƒแƒ แƒ˜_

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) แƒ“แƒ แƒ˜แƒก แƒ›แƒ˜แƒ‘แƒ›แƒฃแƒšแƒ˜แƒ แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒฃแƒš แƒ•แƒ”แƒ‘แƒกแƒแƒ˜แƒขแƒ–แƒ”. แƒแƒฎแƒšแƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒขแƒแƒ แƒ˜แƒก แƒžแƒแƒœแƒ”แƒšแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— sources/stocks MSI-แƒจแƒ˜ (แƒแƒฎแƒแƒšแƒ˜ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ) แƒแƒ  แƒ˜แƒฌแƒ•แƒ”แƒ•แƒก แƒแƒฎแƒแƒš แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒก cataloginventory_stock.

แƒซแƒ•แƒ”แƒšแƒ˜ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒ•แƒ”แƒœแƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ—แƒแƒ•แƒ“แƒแƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“ แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜แƒ แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒจแƒ˜:

  • cataloginventory_stock_item
  • cataloginventory_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);
}

แƒ˜แƒœแƒ•แƒ”แƒœแƒขแƒแƒ แƒ˜_

แƒ—แƒแƒ•แƒ“แƒแƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“, แƒ˜แƒœแƒ•แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“ แƒแƒฎแƒแƒšแƒ˜ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก 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).

แƒ”แƒ แƒ—แƒ˜ "แƒกแƒแƒฌแƒงแƒแƒ‘แƒ˜"แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ”แƒกแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ"แƒฌแƒงแƒแƒ แƒแƒ”แƒ‘แƒ˜"แƒ“แƒ แƒ”แƒ แƒ—แƒ˜ "แƒฌแƒงแƒแƒ แƒ"-แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ”"แƒกแƒแƒฌแƒงแƒแƒ‘แƒ”แƒ‘แƒ˜"(แƒ‘แƒ”แƒ•แƒ แƒ˜แƒ“แƒแƒœ แƒ‘แƒ”แƒ•แƒ แƒ—แƒแƒœ แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒแƒ‘แƒ). แƒ’แƒแƒ›แƒแƒœแƒแƒ™แƒšแƒ˜แƒกแƒ”แƒ‘แƒ˜ แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜แƒ "แƒฌแƒงแƒแƒ แƒ"แƒ“แƒ"แƒกแƒแƒฌแƒงแƒแƒ‘แƒ˜". แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒฎแƒ•แƒ แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ”แƒ‘แƒ—แƒแƒœ (แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒ•แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒ“แƒแƒœแƒ”แƒ–แƒ” - แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ "แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ• แƒฌแƒงแƒแƒ แƒแƒกแƒ—แƒแƒœ แƒแƒœ แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ• แƒ›แƒแƒ แƒแƒ’แƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ‘แƒ›แƒฃแƒšแƒ˜แƒก แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ"). แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒ˜ MSI แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ Magento 2-แƒจแƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ "แƒกแƒแƒฌแƒงแƒแƒ‘แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ CQRS แƒ“แƒ Event Sourcing-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ“แƒ˜แƒ–แƒแƒ˜แƒœแƒ˜".

แƒ›แƒ” แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘ แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ• แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก แƒ“แƒ แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒ”แƒ‘ แƒ˜แƒœแƒ•แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒแƒก แƒฌแƒงแƒแƒ แƒแƒก 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);
}

แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒฃแƒš แƒžแƒแƒœแƒ”แƒšแƒจแƒ˜ แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ–แƒ” แƒ˜แƒœแƒ•แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ—แƒฅแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒแƒ› แƒกแƒฃแƒ แƒแƒ—แƒก:

Magento 2: แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜

แƒ›แƒ”แƒ“แƒ˜แƒ

แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒžแƒแƒœแƒ”แƒšแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ–แƒ” แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก โ€žแƒฎแƒ”แƒšแƒ˜แƒ—โ€œ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒกแƒแƒก แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ แƒฉแƒแƒ˜แƒฌแƒ”แƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒจแƒ˜:

  • 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);
}

catalog_product_entity_varchar

แƒ›แƒ”แƒ“แƒ˜แƒ แƒคแƒแƒ˜แƒšแƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒ˜แƒฅแƒœแƒแƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ แƒแƒšแƒ”แƒ‘แƒ˜แƒ— (แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒ˜ แƒแƒขแƒ แƒ˜แƒ‘แƒฃแƒขแƒ˜แƒก แƒ™แƒแƒ“แƒ˜ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒคแƒ แƒฉแƒฎแƒ˜แƒšแƒ”แƒ‘แƒจแƒ˜):

  • แƒ‘แƒแƒ–แƒ (image)
  • แƒ›แƒชแƒ˜แƒ แƒ” แƒกแƒฃแƒ แƒแƒ—แƒ˜ (small_image)
  • แƒ›แƒ˜แƒœแƒ˜แƒแƒขแƒฃแƒ แƒ (thumbnail)
  • แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก Swatch (swatch_image)

แƒ แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ‘แƒ›แƒ แƒ›แƒ”แƒ“แƒ˜แƒ แƒคแƒแƒ˜แƒšแƒ—แƒแƒœ แƒแƒ แƒ˜แƒก แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ˜แƒก, แƒ แƒแƒช แƒฎแƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒกแƒจแƒ˜ catalog_product_entity_varchar. แƒกแƒแƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ แƒ™แƒแƒ“แƒ˜ แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜แƒ แƒ™แƒแƒ“แƒ˜แƒก "แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒแƒขแƒ แƒ˜แƒ‘แƒฃแƒขแƒ”แƒ‘แƒ˜".

แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒฃแƒš แƒžแƒแƒœแƒ”แƒšแƒจแƒ˜ แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ–แƒ” แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ:

Magento 2: แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜

แƒ™แƒแƒขแƒ”แƒ’แƒแƒ แƒ˜แƒ

แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒ™แƒแƒขแƒ”แƒ’แƒแƒ แƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—:

  • 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-แƒ˜แƒ— (แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒ™แƒแƒขแƒ”แƒ’แƒแƒ แƒ˜แƒ) แƒแƒ แƒ˜แƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒกแƒแƒ˜แƒขแƒ˜แƒก แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ›แƒแƒฆแƒแƒ–แƒ˜แƒ˜แƒก แƒซแƒ˜แƒ แƒ”แƒฃแƒšแƒ˜ แƒ™แƒแƒขแƒ”แƒ’แƒแƒ แƒ˜แƒ (แƒกแƒแƒ˜แƒขแƒ˜แƒก แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ›แƒแƒฆแƒแƒ–แƒ˜แƒ) แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒกแƒแƒก (แƒ˜แƒฎ. แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒขแƒแƒ แƒ˜ / แƒ›แƒแƒฆแƒแƒ–แƒ˜แƒ”แƒ‘แƒ˜ / แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒฆแƒแƒ–แƒ˜แƒ). แƒฃแƒคแƒ แƒ แƒ›แƒ”แƒขแƒ˜แƒช, แƒ—แƒแƒ•แƒแƒ“ แƒ›แƒแƒฆแƒแƒ–แƒ˜แƒ˜แƒก แƒซแƒ˜แƒ แƒ”แƒฃแƒšแƒ˜ แƒ™แƒแƒขแƒ”แƒ’แƒแƒ แƒ˜แƒ แƒแƒกแƒ”แƒ•แƒ” แƒแƒ  แƒแƒ แƒ˜แƒก แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒฌแƒ˜แƒœแƒ แƒ›แƒฎแƒแƒ แƒ”แƒก, แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒ˜แƒกแƒ˜ แƒฅแƒ•แƒ”แƒ™แƒแƒขแƒ”แƒ’แƒแƒ แƒ˜แƒ”แƒ‘แƒ˜.

แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ—แƒ”แƒ›แƒ แƒ™แƒ•แƒšแƒแƒ• แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ–แƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜แƒ, แƒ™แƒแƒขแƒ”แƒ’แƒแƒ แƒ˜แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒกแƒแƒก แƒแƒ  แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒจแƒ”แƒงแƒ•แƒแƒœแƒแƒก, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘ แƒ—แƒแƒ•แƒแƒ“ แƒ›แƒแƒ’แƒ”แƒœแƒขแƒแƒก แƒ›แƒ˜แƒ”แƒ  แƒ›แƒแƒฌแƒแƒ“แƒ”แƒ‘แƒฃแƒš แƒ™แƒšแƒแƒกแƒ”แƒ‘แƒก (แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒก แƒ“แƒ แƒกแƒแƒชแƒแƒ•แƒ”แƒ‘แƒก). แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ แƒ˜ แƒจแƒ”แƒงแƒ•แƒแƒœแƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒก แƒ™แƒแƒขแƒ”แƒ’แƒแƒ แƒ˜แƒแƒกแƒ—แƒแƒœ แƒแƒกแƒแƒชแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (แƒ™แƒแƒขแƒ”แƒ’แƒแƒ แƒ˜แƒ˜แƒก แƒ“แƒแƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ แƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ, แƒฎแƒแƒšแƒ แƒ™แƒแƒขแƒ”แƒ’แƒแƒ แƒ˜แƒ˜แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒแƒ แƒ˜ แƒ˜แƒฎแƒกแƒœแƒ”แƒ‘แƒ แƒ“แƒแƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒกแƒแƒก):

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โ€œ, แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒก แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒ˜ แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒฃแƒš แƒžแƒแƒœแƒ”แƒšแƒจแƒ˜ แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ:

Magento 2: แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜

แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ”แƒ‘แƒ˜

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜แƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒแƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜:

  • แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒ แƒ”แƒ‘แƒ: แƒ“แƒแƒ แƒ”แƒ™แƒ”แƒ— แƒ™แƒแƒœแƒกแƒแƒšแƒจแƒ˜ ./bin/magento indexer:reindex;
  • แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก/แƒ™แƒแƒขแƒ”แƒ’แƒแƒ แƒ˜แƒ”แƒ‘แƒ˜แƒก URL-แƒ”แƒ‘แƒ˜แƒก แƒ แƒ”แƒ’แƒ”แƒœแƒ”แƒ แƒแƒชแƒ˜แƒ: แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ โ€œelgentos/regenerate-catalog-urlsยซ

แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ˜ แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒฃแƒš แƒžแƒแƒœแƒ”แƒšแƒจแƒ˜ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’:

Magento 2: แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜

แƒ“แƒ แƒฌแƒ˜แƒœ:

Magento 2: แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜

แƒ แƒ”แƒ–แƒ˜แƒฃแƒ›แƒ”

แƒžแƒ แƒแƒ“แƒฃแƒฅแƒชแƒ˜แƒ˜แƒก แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜ (10 แƒชแƒแƒšแƒ˜), แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ˜แƒœแƒ แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜, แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒฃแƒ› แƒกแƒ˜แƒ“แƒ˜แƒ“แƒ˜แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ (1 แƒฌแƒแƒ›แƒ˜ 10-แƒ˜แƒก แƒฌแƒ˜แƒœแƒแƒแƒฆแƒ›แƒ“แƒ”แƒ’). แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ˜แƒก แƒฃแƒคแƒ แƒ แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒจแƒ”แƒกแƒแƒคแƒแƒกแƒ”แƒ‘แƒšแƒแƒ“, แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒฃแƒคแƒ แƒ แƒ“แƒ˜แƒ“แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ - แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒแƒกแƒ”แƒฃแƒšแƒ˜, แƒแƒœ แƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ˜แƒ แƒแƒ—แƒแƒกแƒแƒ‘แƒ˜แƒ—. แƒ—แƒฃแƒ›แƒชแƒ, แƒ—แƒฃแƒœแƒ“แƒแƒช แƒแƒกแƒ”แƒ—แƒ˜ แƒ›แƒชแƒ˜แƒ แƒ” แƒ–แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒ—, แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ“แƒแƒ•แƒแƒกแƒ™แƒ•แƒœแƒแƒ—, แƒ แƒแƒ› Magento-แƒก แƒ›แƒ˜แƒ”แƒ  แƒ›แƒแƒฌแƒแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฎแƒ”แƒšแƒกแƒแƒฌแƒงแƒแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ (แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒกแƒแƒชแƒแƒ•แƒ˜) แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜แƒ (แƒฎแƒแƒ–แƒก แƒ•แƒฃแƒกแƒ•แƒแƒ› - แƒ‘แƒ”แƒ•แƒ แƒ˜!) แƒ“แƒแƒแƒฉแƒฅแƒแƒ แƒ”แƒ— แƒกแƒแƒญแƒ˜แƒ แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ›แƒแƒ•แƒ” แƒ“แƒ แƒแƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒœแƒแƒ“ (แƒฎแƒแƒ–แƒก แƒ•แƒฃแƒกแƒ•แƒแƒ› - แƒ‘แƒ”แƒ•แƒ แƒ˜!) แƒจแƒ”แƒแƒ›แƒชแƒ˜แƒ แƒ”แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜ แƒ›แƒแƒฎแƒ•แƒ”แƒ“แƒ แƒ˜แƒก แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ”.

แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“, แƒฌแƒงแƒแƒšแƒ˜ แƒกแƒ•แƒ”แƒšแƒ˜ แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ แƒ“แƒ แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒชแƒฎแƒแƒ“แƒ”แƒ‘แƒ. แƒ—แƒฃแƒ›แƒชแƒ, แƒแƒฎแƒšแƒ แƒ›แƒ” แƒ›แƒแƒฅแƒ•แƒก แƒ™แƒแƒ“แƒ˜, แƒ แƒแƒ› แƒ•แƒ˜แƒ—แƒแƒ›แƒแƒจแƒ แƒ“แƒ, แƒแƒšแƒ‘แƒแƒ—, แƒฃแƒคแƒ แƒ แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒ“แƒแƒกแƒ™แƒ•แƒœแƒแƒ›แƒ“แƒ” แƒ›แƒ˜แƒ•แƒ˜แƒ“แƒ”.

แƒฌแƒงแƒแƒ แƒ: www.habr.com