Magento 2- ထုတ်ကုန်မျာသကို ဒေတာဘေ့စ်သို့ တိုက်ရိုက်တင်သလင်သပါ။

В ယခင်ဆောင်သပါသ ကျလန်ုပ်သည် Magento 2 သို့ ထုတ်ကုန်မျာသ တင်သလင်သခဌင်သ လုပ်ငန်သစဉ်ကို ပုံမဟန်နည်သလမ်သဖဌင့် - မော်ဒယ်မျာသနဟင့် သိုလဟောင်ခန်သမျာသမဟတဆင့် ဖော်ပဌခဲ့သည်။ ပုံမဟန်နည်သလမ်သသည် အလလန်နိမ့်သော ဒေတာလုပ်ဆောင်မဟုအမဌန်နဟုန်သရဟိသည်။ ကျလန်ုပ်၏ လက်ပ်တော့သည် တစ်စက္ကန့်လျဟင် ထုတ်ကုန်တစ်ခုခန့် ထုတ်လုပ်နေပါသည်။ ကအဆက်အစပ်တလင်၊ စံ Magento 2 ယန္တရာသမျာသ (မော်ဒယ်မျာသ၊ စက်ရုံမျာသ၊ သိုလဟောင်ခန်သမျာသ) ကိုကျော်ဖဌတ်ကာ ဒေတာဘေ့စ်ထဲသို့ တိုက်ရိုက်ဝင်ရောက်ခဌင်သဖဌင့် ထုတ်ကုန်တစ်ခုကို တင်သလင်သရန် အခဌာသနည်သလမ်သတစ်ခုကို စဉ်သစာသပါသည်။ ထုတ်ကုန်တင်သလင်သရန် ခဌေလဟမ်သမျာသ အဆင့်ဆင့်ကို MySQL နဟင့် လုပ်ဆောင်နိုင်သော မည်သည့် ပရိုဂရမ်သမင်သဘာသာစကာသနဟင့်မဆို လိုက်လျောညီထလေဖဌစ်စေနိုင်သည်။

ခလင: Magento တလင် အဆင်သင့်လုပ်ထာသသော လုပ်ဆောင်နိုင်စလမ်သ ရဟိသည်။ ဒေတာတင်သလင်သခဌင်သ။ အမျာသစုမဟာ သင့်အတလက် လုံလောက်ပါလိမ့်မည်။ သို့သော်၊ သင်သည် တင်သလင်သမဟုလုပ်ငန်သစဉ်အပေါ် အကန့်အသတ်မရဟိ ပိုမိုပဌီသပဌည့်စုံသော ထိန်သချုပ်မဟု လိုအပ်ပါက သင့်တလင်ရဟိသော CSV ဖိုင်ကို ပဌင်ဆင်ခဌင်သမဟ ကဌိုဆိုပါသည်။

Magento 2- ထုတ်ကုန်မျာသကို ဒေတာဘေ့စ်သို့ တိုက်ရိုက်တင်သလင်သပါ။

ဆောင်သပါသနဟစ်ခုလုံသရေသသာသခဌင်သမဟထလက်ပေါ်လာသောကုဒ်ကို Magento module တလင်ကဌည့်ရဟုနိုင်သည်flacer32/mage2_ext_demo_import” . ကသည်မဟာ သရုပ်ပဌ module ကုဒ်ကို ရိုသရဟင်သစေရန် လိုက်နာခဲ့သော ကန့်သတ်ချက်အချို့ဖဌစ်သည်။

  • ထုတ်ကုန်မျာသသည် ဖန်တီသထာသခဌင်သသာဖဌစ်ပဌီသ အပ်ဒိတ်မလုပ်ပါ။
  • ဂိုဒေါင်တစ်လုံသ
  • ၎င်သတို့၏ဖလဲ့စည်သပုံမပါဘဲ အမျိုသအစာသအမည်မျာသကိုသာ တင်သလင်သပါသည်။
  • ဒေတာတည်ဆောက်ပုံမျာသသည် ဗာသရဟင်သ 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)
  • Inventory data (စတော့တလင်ရဟိသော ကုန်ပစ္စည်သအရေအတလက်)
  • မီဒီယာ (ဓာတ်ပုံ)
  • ကက်တလောက်အမျိုသအစာသမျာသနဟင့် ချိတ်ဆက်မဟု

ကုန်ပစ္စည်သမဟတ်ပုံတင်ခဌင်သ။

အခဌေခံထုတ်ကုန်အချက်အလက်မျာသကို တလင်တလေ့နိုင်သည်။ 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 adapter ကိုအသုံသပဌုသည်-

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 ထုတ်ကုန်ဇယာသတလင်၊ admin panel တလင်မဌင်နိုင်သည် (ကတ်တလောက်/ထုတ်ကုန်မျာသ).

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

attribute ကုဒ်ကိုသုံသပဌီသ၊ ကျလန်ုပ်တို့သည် ၎င်သ၏ 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

စာရင်သဇယာသ_စတော့ခ်_ပစ္စည်သ

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 ဖလဲ့စည်သပုံအကဌောင်သ အသေသစိတ်ကို ဆောင်သပါသတလင် တလေ့နိုင်သည်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ကတ်တလောက်မဟ ထုတ်ကုန်မျာသကို ဖော်ပဌသောအခါ ပလက်ဖောင်သသည် ၎င်သကို ပုံတစ်ပုံအဖဌစ် သုံသနိုင်စေရန်။

Register မဟာ တင်ထာသပါတယ်။ ./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

မီဒီယာဖိုင်တစ်ခုအာသ မတူညီသောအခန်သကဏ္ဍမျာသဖဌင့် အသုံသပဌုနိုင်ပါသည်။ (သက်ဆိုင်ရာ attribute ကုဒ်ကို ကလင်သစဥ်မျာသတလင် ညလဟန်ပဌသည်-

  • အခဌေခံ(image)
  • ပုံငယ် (small_image)
  • ပုံသေသ (thumbnail)
  • Swatch ပုံ (swatch_image)

မီဒီယာဖိုင်တစ်ခုသို့ အခန်သကဏ္ဍမျာသကို ချိတ်ဆက်ခဌင်သသည် အတိအကျဖဌစ်ပျက်နေသည်။ catalog_product_entity_varchar. binding code သည် "ရဟိကုဒ်၊အခဌေခံထုတ်ကုန်အရည်အသလေသမျာသ"။

စီမံခန့်ခလဲသူအကန့်ရဟိ ထုတ်ကုန်သို့ ပုံတစ်ပုံကို ထည့်ပဌီသနောက် ၎င်သသည် ကကဲ့သို့ဖဌစ်ပုံရသည်-

Magento 2- ထုတ်ကုန်မျာသကို ဒေတာဘေ့စ်သို့ တိုက်ရိုက်တင်သလင်သပါ။

အမျိုသအစာသ

အမျိုသအစာသအလိုက် ဒေတာပါရဟိသော အဓိကဇယာသမျာသ-

  • catalog_category_entityအမျိုသအစာသစာရင်သ၊
  • catalog_category_product: ထုတ်ကုန်မျာသနဟင့် အမျိုသအစာသမျာသကဌာသ ချိတ်ဆက်မဟု၊
  • catalog_category_entity_*: EAV ရည်ညလဟန်သချက်တန်ဖိုသမျာသ;

အစပိုင်သတလင်၊ အချည်သနဟီသသော Magento အပလီကေသရဟင်သတစ်ခုတလင်၊ အမျိုသအစာသ မဟတ်ပုံတင်ခဌင်သတလင် အမျိုသအစာသ ၂ ခုပါရဟိသည် (ကော်လံအမည်မျာသကို ငါအတိုချုံသထာသသည်- 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 catalog တစ်ခုလုံသ၏ အမဌစ်ဖဌစ်ပဌီသ စီမံခန့်ခလဲသူ အကန့်တလင် သို့မဟုတ် ရဟေ့စာမျက်နဟာတလင် မရနိုင်ပါ။ id=2 ပါသော အမျိုသအစာသ (မူရင်သအမျိုသအစာသ) သည် ပင်မဆိုက်၏ ပင်မစတိုသအတလက် root အမျိုသအစာသဖဌစ်သည် (ပင်မဝဘ်ဆိုဒ်စတိုသ) အပလီကေသရဟင်သကို အသုံသပဌုသောအခါတလင် ဖန်တီသခဲ့သည် (ကဌည့်ပါ။ စီမံခန့်ခလဲသူ/စတိုသဆိုင်မျာသ/စတိုသဆိုင်မျာသအာသလုံသ) ထို့အပဌင်၊ စတိုသဆိုင်၏ root အမျိုသအစာသကိုလည်သ ၎င်သ၏ အမျိုသအစာသခလဲမျာသသာ ရဟေ့တလင် မရနိုင်ပါ။

ကဆောင်သပါသ၏ခေါင်သစဉ်သည် ထုတ်ကုန်မျာသပေါ်တလင် ဒေတာတင်သလင်သနေဆဲဖဌစ်သောကဌောင့် အမျိုသအစာသမျာသဖန်တီသရာတလင် ဒေတာဘေ့စ်ထဲသို့ တိုက်ရိုက်ဝင်ရောက်မဟုကို ကျလန်ုပ်အသုံသမပဌုဘဲ 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" သို့ ထုတ်ကုန်လင့်ခ်ကို ပေါင်သထည့်ပဌီသနောက်၊ စီမံခန့်ခလဲသူအကန့်ရဟိ ထုတ်ကုန်အသေသစိတ်အချက်အလက်မျာသမဟာ ကကဲ့သို့ တလေ့ရသည်-

Magento 2- ထုတ်ကုန်မျာသကို ဒေတာဘေ့စ်သို့ တိုက်ရိုက်တင်သလင်သပါ။

အပိုဆောင်သလုပ်ဆောင်မဟုမျာသ

ဒေတာတင်သလင်သမဟုပဌီသသည်နဟင့်၊ သင်သည် အောက်ပါနောက်ထပ်အဆင့်မျာသကို အပဌီသသတ်ရန် လိုအပ်သည်-

  • ဒေတာအညလဟန်သကိန်သ- ကလန်ဆိုသလ်တလင် ခေါ်ဆိုပါ။ ./bin/magento indexer:reindex;
  • ထုတ်ကုန်/အမျိုသအစာသမျာသအတလက် URL မျာသကို ပဌန်လည်ထုတ်လုပ်ခဌင်သ- သင်သည် တိုသချဲ့မဟုကို အသုံသပဌုနိုင်သည်။elgentos/regenerate-catalog-urls«

နောက်ထပ်လုပ်ဆောင်ချက်မျာသကို လုပ်ဆောင်ပဌီသနောက် စီမံခန့်ခလဲသူအကန့်ရဟိ ထုတ်ကုန်မျာသ-

Magento 2- ထုတ်ကုန်မျာသကို ဒေတာဘေ့စ်သို့ တိုက်ရိုက်တင်သလင်သပါ။

ရဟေ့တလင်၊

Magento 2- ထုတ်ကုန်မျာသကို ဒေတာဘေ့စ်သို့ တိုက်ရိုက်တင်သလင်သပါ။

အကျဉ်သချုပ်

ယခင်ဆောင်သပါသတလင်ကဲ့သို့ တူညီသောထုတ်ကုန် (10 အပိုင်သပိုင်သ) သည် အနည်သဆုံသ ပဌင်သအာသပိုမိုမဌန်ဆန်သော အမဟာစာတစ်ခု (1 စက္ကန့်နဟင့် 10) ကို တင်သလင်သပါသည်။ အမဌန်နဟုန်သကို ပိုမိုတိကျစလာ ခန့်မဟန်သရန်၊ သင်သည် ပိုကဌီသသော ထုတ်ကုန်အရေအတလက် - ရာနဟင့်ချီသော သို့မဟုတ် ပိုမိုကောင်သမလန်သော်လည်သ ထောင်ပေါင်သမျာသစလာ လိုအပ်သည်။ သို့သော်လည်သ ကမျဟသေသငယ်သော ဒေတာထည့်သလင်သမဟုပမာဏဖဌင့်ပင် Magento (မော်ဒယ်မျာသနဟင့် သိုလဟောင်ခန်သမျာသ) မဟ ပံ့ပိုသပေသသော ကိရိယာမျာသကို အသုံသပဌုခဌင်သသည် အရေသကဌီသကဌောင်သ ကျလန်ုပ်တို့ ကောက်ချက်ချနိုင်ပါသည်။ အလလန်!) လိုအပ်သော လုပ်ဆောင်နိုင်စလမ်သ၏ ဖလံ့ဖဌိုသတိုသတက်မဟုကို အရဟိန်မဌဟင့်သော်လည်သ တစ်ချိန်တည်သတလင် သိသိသာသာ (ကျလန်တော် အလေသပေသဖော်ပဌသည်- အလလန်!) ဒေတာဘေ့စ်ထဲသို့ ဒေတာရောက်ရဟိသည့် အမဌန်နဟုန်သကို လျဟော့ချပါ။

ရလဒ်အနေဖဌင့် ရေသည် စိုစလတ်နေပဌီသ ယင်သသည် ပေါ်ထလန်သခဌင်သမဟုတ်ပါ။ သို့သော်၊ ယခု ကျလန်ုပ်တလင် ကစာသရန် ကုဒ် ရဟိပဌီသ ပို၍ စိတ်ဝင်စာသစရာကောင်သသော ကောက်ချက်အချို့ကို ရရဟိနိုင်သည်။

source: www.habr.com