คำถามติดแท็ก model

โมเดลประกอบด้วยตรรกะทางธุรกิจส่วนใหญ่ในโมดูล Magento


1
ชื่อเต็มของคลาสในวิธีโรงงานของวีโอไอพี
ใน Magento 1 ถ้าฉันใช้ชื่อคลาส Magento แบบเต็มในวิธีการจากโรงงานฉันสามารถสร้างวัตถุได้ //trying full class name instead of catalog/product $object = Mage::getModel('Mage_Catalog_Model_Product'); อย่างไรก็ตามสิ่งเดียวกันนี้ใช้ไม่ได้กับผู้ช่วยเหลือ ถ้าคุณลอง Mage::helper('Mage_Core_Helper_Url'); คุณได้รับ Warning: include(Mage/Mage/Core/Helper/Url/Helper/Data.php): failed to open stream: No such file or directory in /path/to/magentolib/Varien/Autoload.php on line 93 #0 /path/to/magentolib/Varien/Autoload.php(93): mageCoreErrorHandler(2, 'include(Mage/Ma...', '/path/to/magent...', 93, Array) #1 /path/to/magentolib/Varien/Autoload.php(93): Varien_Autoload::autoload() #2 [internal function]: Varien_Autoload->autoload('Mage_Mage_Core_...') …
11 model  helper  factory 


6
วิธีรับชื่อประเทศจากรหัสประเทศใน Magento 2
ฉันต้องการชื่อประเทศจากรหัสประเทศฉันได้รับรหัสประเทศจากลำดับข้อมูลเช่นนี้: $data = $order->getShippingAddress()->getData(); $countryCode = $data['country_id']; echo $countryCode; มันจะพิมพ์ 'US' หรือรหัสประเทศอื่น ๆ มีวิธีรับชื่อประเทศจากรหัสประเทศนี้หรือไม่?

2
ฉันจะบันทึกเอนทิตีของโมเดลใหม่หรือที่อัพเดตได้อย่างไร?
ใน Magento 2 เรามีคลาสที่เก็บข้อมูล วิธีคลาสสิกที่save()ใช้อย่างมากใน Magento 1.9 ถูกคัดค้านถ้าฉันถูกต้องจาก 2.04 หรือ 2.05 ฉันใช้โรงงานเพื่อสร้างวัตถุใหม่และหลังจากตั้งค่าคุณสมบัติของใหม่ตัวอย่างเช่นผลิตภัณฑ์ที่ฉันเรียกว่าsave(): $productFactory->create()->setName()...->save() ในทางกลับกันเรามีที่เก็บซึ่งมีวิธีการsaveด้วย ฉันใช้มันสั้น ๆ เช่นนี้: $product = $productFactory->create()->setName()... $productRepository->save($product) ในรหัสของฉันฉันมีชั้นเรียนทำงานทั้งสองวิธี ฉันยังสังเกตเห็นว่าบางครั้งวิธีที่แตกต่างหมายถึงพฤติกรรมที่แตกต่าง มีวิธีการกับที่เก็บข้อมูลบางอย่างในการตรวจสอบความถูกต้องของข้อมูลเพิ่มเติมหรือไม่? ฉันควรทำอย่างไร

2
อะไรและทำไมเป็นวิธีที่เหมาะสมในการโหลดแบบจำลอง
ฉันมีประสบการณ์ค่อนข้างมากกับ Magento แต่ฉันรู้ว่าฉันไม่เข้าใจวิธีการโหลดแบบจำลองที่ถูกต้องและทำไม ฉันได้อ่านทุกสิ่งที่ฉันสามารถทำได้เกี่ยวกับหัวข้อนี้ แต่ผู้คนอธิบายสิ่งต่าง ๆ เช่นนี้ไม่เคยลึกพอที่จะอธิบายได้ทำไมต้องใช้วิธีการเฉพาะนี้แทนวิธีอื่น สมมติว่าไม่มีที่เก็บสำหรับรุ่นที่ฉันต้องการโหลด จนถึงตอนนี้ฉันมักจะใช้ model ในตัวสร้างแล้วก็โหลดมัน public function __construct( \Vendor\Module\Model\Something $somethingModel ) { $this->somethingModel = $somethingModel; } public function getTestById($id) { return $this->somethingModel->load($id); } และมันก็ใช้งานได้ตามปกติฉันก็ค่อนข้างแน่ใจว่ามันหรืออย่างน้อยก็ถูกใช้ในแกนกลางทั่วไป แต่ฉันเห็นเพื่อนร่วมงานคนหนึ่งของฉันใช้ modelFactory->create()->load($id) เท่าที่ฉันเข้าใจโรงงานกำลังถูกใช้เพื่อสร้างเอนทิตีใหม่ตัวอย่างเช่นถ้าฉันต้องการสร้างผลิตภัณฑ์ใหม่จากนั้นฉันสามารถสร้างโรงงานเติมข้อมูลด้วยข้อมูลแล้วบันทึก แต่แล้วอีกครั้งฉันเริ่มค้นคว้าหัวข้อและฉันเห็นตัวอย่างจาก Fabian Schmengler ( เมื่อเราควรใช้ Repository และ Factory ใน Magento 2? ) ผู้โหลดแบบจำลองด้วยวิธีนี้และไม่สนับสนุนคนอื่นจากการโหลดแบบจำลองเขาไม่ได้ทำ ไม่อธิบายว่าทำไมนอกจากบอกว่ามันไม่ใช่ส่วนหนึ่งของสัญญาการบริการ เท่าที่ฉันเข้าใจที่เก็บข้อมูลเป็นส่วนหนึ่งของสัญญาบริการดังนั้นฉันจึงไม่เห็นการเชื่อมต่อใด ๆ ที่นี่เมื่อพูดถึงการโหลดรุ่นที่ไม่สามารถใช้งานได้ผ่านที่เก็บข้อมูล …

1
ตารางที่ไม่มีคีย์หลักที่เพิ่มขึ้นอัตโนมัติ
ฉันได้ตั้งค่าตารางใน Magento ที่มีสองฟิลด์รหัสและวันที่ วันที่เป็นเพียงการตั้งค่าเป็นตอนนี้ แต่รหัสเป็นจริงเป็นกุญแจต่างประเทศที่แนบมากับรหัสการสั่งซื้อ ปัญหาของฉันคือ Magento ไม่ได้บันทึกวัตถุเหล่านี้ไม่มีข้อผิดพลาดเกิดขึ้น แต่ไม่มีการเพิ่มอะไรลงในฐานข้อมูล
9 database  model  table 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.