ProHoster > Блог > Gudanarwa > Magento 2: shigo da kayayyaki kai tsaye cikin ma'ajin bayanai
Magento 2: shigo da kayayyaki kai tsaye cikin ma'ajin bayanai
В labarin da ya gabata Na bayyana tsarin shigo da kayayyaki zuwa Magento 2 a cikin hanyar da aka saba - ta hanyar samfura da wuraren ajiya. Hanyar da aka saba tana da ƙarancin saurin sarrafa bayanai. Laptop dina yana samar da kusan samfura ɗaya a sakan daya. A cikin wannan ci gaba, na yi la'akari da wata hanya ta dabam don shigo da samfur - ta hanyar shiga kai tsaye cikin bayanan, ketare daidaitattun hanyoyin Magento 2 (samfurai, masana'antu, ma'aji). Za a iya daidaita jerin matakai don shigo da kayayyaki zuwa kowane yaren shirye-shirye wanda zai iya aiki tare da MySQL.
Disclaimer: Magento yana da shirye-shiryen aiki don shigo da bayanai kuma, mai yiwuwa, zai ishe ku. Koyaya, idan kuna buƙatar ƙarin cikakken iko akan tsarin shigo da kaya, ba'a iyakance ga shirya fayil ɗin CSV don abin da kuke da shi ba, barka da zuwa cat.
Ana iya duba lambar da ta samo asali daga rubuta labaran biyu a cikin tsarin Magento "flancer32/mage2_ext_demo_import". Anan akwai wasu ƙuntatawa da na bi don sauƙaƙe lambar demo module:
Ana ƙirƙira samfuran kawai, ba sabunta su ba.
Sito daya
Sunayen rukuni kawai ake shigo da su, ba tare da tsarin su ba
Tsarin bayanai sun dace da sigar 2.3
JSON don shigo da samfur guda ɗaya:
{
"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"
}
Bayanin babban matakan shigo da kaya
rajista na samfurin kanta
haɗi tsakanin samfur da gidan yanar gizo
Halayen samfuran asali (EAV)
bayanan ƙididdiga (yawan samfuran da ke hannun jari)
kafofin watsa labarai (hotuna)
haɗi tare da nau'ikan kasida
Rijistar Samfura
Ana iya samun bayanan samfur na asali a ciki 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`)
)
Mafi ƙarancin bayanin da ake buƙata don ƙirƙirar shigarwa a cikin rajistar samfur shine:
attribute_set_id
sku
kari:
type_id - idan ba mu bayyana shi ba, to za a yi amfani da 'mai sauƙi'
Don rubuta kai tsaye zuwa bayanan bayanai, Ina amfani da adaftar DB na Magento kanta:
Sabon samfurin da aka yi rajista bashi da suna ko kwatance. Duk wannan ana yin ta ne Siffofin EAV. Anan akwai jerin mahimman halayen samfur waɗanda ake buƙata don samfurin ya nuna daidai a gaba:
name
price
description
short_description
status
tax_class_id
url_key
visibility
Ana ƙara wani sifa na dabam ga samfur kamar wannan (ba a cire cikakkun bayanai na samun mai ganowa da nau'in sifa daga lambar sa):
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);
}
}
Yin amfani da lambar sifa, muna ƙayyade id da nau'in bayanai (datetime, decimal, int, text, varchar), sa'an nan kuma rubuta bayanan don taga mai gudanarwa a cikin teburin da ya dace (store_id = 0).
Bayan ƙara abubuwan da ke sama zuwa samfurin, kuna samun wannan hoton a cikin rukunin gudanarwa:
Bayanan kaya
An fara daga sigar 2.3 a cikin Magento, akwai teburi guda biyu masu kama da juna waɗanda ke ba da ajiyar bayanan kaya (yawan samfur):
cataloginventory_*: tsohon tsari;
inventory_*: sabon tsarin (MSI - Multi Source Inventory);
Kuna buƙatar ƙara bayanan ƙira zuwa tsarin biyu, saboda sabon tsarin bai riga ya zama cikakken 'yancin kai daga tsohon daya (yana da yuwuwar hakan don default sito a cikin sabon tsarin akwai tebur a ciki cataloginventory_stock_status kamar yadda inventory_stock_1).
katalogin lissafi_
Lokacin tura Magneto 2.3 da farko muna da shigarwar 2 a ciki store_website, wanda ya dace da shafuka biyu - gudanarwa da babban abokin ciniki:
Wato, a cikin tsohon tsarinmu akwai "gidajen ajiya" guda ɗaya kawai (stock) kuma yana da alaƙa da gidan yanar gizon gudanarwa. Ƙara sababbi ta hanyar admin panel sources/stocks a cikin MSI (sabon tsari) baya haifar da sabbin shigarwar ciki cataloginventory_stock.
Bayanan ƙididdiga game da samfurori a cikin tsohon tsarin an fara rubuta su a cikin tebur:
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);
}
kaya_
Da farko, sabon tsarin don adana bayanan kaya ya ƙunshi 1"source"(inventory_source):
«Source» yana wakiltar ma'ajin jiki don samfuran (rikodin ya ƙunshi daidaitawar jiki da adireshin aikawasiku). "Warehouse"haɗin kai ne na ma'ana na "sources" da yawa (inventory_source_stock_link)
a matakin da haɗin kai zuwa tashar tallace-tallace ke faruwa (inventory_stock_sales_channel)
type |code|stock_id|
-------|----|--------|
website|base| 1|
Yin la'akari da tsarin bayanan, ana ɗaukar nau'ikan tashoshi na tallace-tallace daban-daban, amma ta tsohuwa kawai haɗin gwiwa "stock"-"yanar"(Haɗin yanar gizon yana bin lambar gidan yanar gizon - base).
Daya"sito"za a iya danganta su da yawa"kafofin"kuma daya"source"- da yawa"ɗakunan ajiya"( dangantaka mai yawa-da-yawa). Abubuwan da aka keɓance sun kasance na asali"source"Kuma"sito". Ba a sake haɗa su da wasu ƙungiyoyi ba (iyakance a matakin lambar - kuskuren "Ba za a iya ajiye hanyar haɗi mai alaƙa da Tsohuwar Tushen ko Tsohuwar Stock"). Ana iya samun ƙarin cikakkun bayanai game da tsarin MSI a cikin Magento 2 a cikin labarin "Tsarin Gudanar da Warehouse ta amfani da CQRS da Event Sourcing. Zane".
Zan yi amfani da saitunan tsoho kuma in ƙara duk bayanan ƙira zuwa tushen default, wanda ke da hannu a cikin tashar tallace-tallace da ke hade da gidan yanar gizon tare da lambar base (daidai da ƙarshen shagon - duba store_website):
catalog_product_entity_varchar: Ana adana ayyukan da aka yi amfani da hoton a nan;
kuma hotunan da kansu an ajiye su zuwa kundin adireshi ./pub/media/catalog/product/x/y/inda x и y - haruffa na farko da na biyu na sunan fayil ɗin hoton. Misali, fayil image.png ya kamata a cece kamar yadda ./pub/media/catalog/product/i/m/image.png, ta yadda dandalin zai iya amfani da shi azaman hoto lokacin da aka kwatanta samfurori daga kasida.
catalog_product_entity_media_gallery
An buga rajista a ciki ./pub/media/catalog/product/ fayilolin mai jarida (tsarin sanya fayil ɗin kanta ba a tattauna shi a cikin wannan labarin):
Muna haɗa fayil ɗin mai jarida mai rijista tare da samfurin da ya dace ba tare da an ɗaure shi da kowane gaban shago ba. Ba a bayyana ainihin inda ake amfani da wannan bayanan ba da kuma dalilin da yasa ba zai yiwu ba don samun damar bayanai daga teburin da ya gabata, amma wannan tebur yana wanzu kuma ana rubuta bayanan lokacin da aka ƙara hoto a cikin samfurin. To shi ke nan.
Ana iya amfani da fayil ɗin mai jarida tare da ayyuka daban-daban (ana nuna lambar sifa mai dacewa a cikin baka):
Tushe(image)
Karamin Hoto (small_image)
Thumbnail (thumbnail)
Hoton Swatch (swatch_image)
Haɗa matsayi zuwa fayil ɗin mai jarida daidai abin da ke faruwa a ciki catalog_product_entity_varchar. Lambar dauri yayi kama da lambar da ke cikin "Halayen samfur na asali".
Bayan ƙara hoto zuwa samfurin a cikin admin panel yana kama da haka:
Categories
Babban teburi masu ɗauke da bayanai ta rukuni:
catalog_category_entity: rajista na rukuni;
catalog_category_product: haɗi tsakanin samfurori da nau'i;
catalog_category_entity_*: ƙimar sifa na EAV;
Da farko, a cikin aikace-aikacen Magento mara komai, rukunin rajista ya ƙunshi nau'ikan nau'ikan 2 (Na gajarta sunayen shafi: crt - created_at, upd - updated_at):
Rukunin tare da id=1 shine tushen gabaɗayan kasida na Magento kuma baya samuwa ko dai a cikin kwamitin gudanarwa ko a shafi na gaba. Rukuni tare da id=2 (Nau'in Default) shine tushen tushen babban kantin sayar da gidan yanar gizon (Babban Shagon Yanar Gizo) ƙirƙira lokacin da aka tura aikace-aikacen (duba. Admin / Stores / Duk Stores). Haka kuma, tushen tushen kantin da kansa ma ba a samunsa a gaba, sai dai rukunoninsa.
Tun da har yanzu batun wannan labarin yana ci gaba da shigo da bayanai kan samfuran, ba zan yi amfani da shigarwa kai tsaye a cikin bayanan ba lokacin ƙirƙirar nau'ikan, amma zan yi amfani da azuzuwan da Magento ya samar da kanta (samfurai da wuraren ajiya). Ana amfani da shigarwa kai tsaye cikin ma'ajin bayanai kawai don haɗa samfurin da aka shigo da shi da wani nau'i (nau'in yana daidaita da sunansa, kuma ana dawo da nau'in id yayin daidaitawa):
Samfura a cikin kwamitin gudanarwa bayan yin ƙarin ayyuka:
kuma a gaba:
Takaitaccen
Saitin samfuran iri ɗaya ( guda 10) kamar a labarin da ya gabata ana shigo da shi aƙalla tsari na girma cikin sauri (1 daƙiƙa 10). Don ƙarin kimanta saurin daidai, kuna buƙatar babban adadin samfuran - ɗaruruwan ɗari, ko mafi kyau tukuna dubbai. Duk da haka, ko da tare da irin wannan ƙananan girman bayanan shigarwa, za mu iya yanke shawarar cewa amfani da kayan aikin da Magento (samfurai da ma'ajin ajiya) ke bayarwa yana da mahimmanci (na jaddada - yawa!) hanzarta haɓaka aikin da ake buƙata, amma a lokaci guda mahimmanci (Na jaddada - yawa!) rage saurin da bayanai ke shiga rumbun adana bayanai.
Sakamakon haka, ruwan ya zama jike kuma wannan ba wahayi bane. Duk da haka, yanzu ina da lambar da zan yi wasa da ita kuma watakila na zo wasu ƙarin mafi ban sha'awa ƙarshe.