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

3
วิธีการใช้สัญญาบริการสำหรับโมดูลที่กำหนดเองใน Magento 2
เท่าที่เห็นในโพสต์นี้: เลิกบันทึกและวิธีการโหลดนามธรรมรุ่นsaveและloadวิธีการเลิกใช้ในวีโอไอพี 2 พัฒนาสาขา ดังนั้นแนวปฏิบัติที่ดีในขณะนี้คือการใช้สัญญาบริการเพื่อจัดการกับหน่วยงาน CRUD กระบวนการทีละขั้นตอนที่ฉันต้องทำเพื่อใช้สัญญาบริการสำหรับหน่วยงานโมดูลที่กำหนดเองของฉันคืออะไร หมายเหตุ: ฉันรู้ว่าอาจมีหลายพันวิธีในรุ่น CRUD ของฉันฉันแค่ขอวิธีการที่ชัดเจนตามที่ระบุไว้ที่นี่: http://devdocs.magento.com/guides/v2.0/extension-dev-guide /service-contracts/design-patterns.html : get save getList delete deleteById

5
วิธีตั้งค่า ID ร้านค้าบน Mage_Catalog_Model_Resource_Product_Collection
งานนั้นไม่สำคัญ ฉันต้องการรับรายการผลิตภัณฑ์สำหรับมุมมองร้านค้าโดยเฉพาะด้วยการเปิดใช้งานแค็ตตาล็อกแบบแบน ทางออกที่ชัดเจนที่สุดคือ: $collection = Mage::getResourceModel('catalog/product_collection') ->setStore($storeId); ในความเป็นจริงsetStore()วิธีการไม่ได้สร้างความแตกต่างใด ๆ ที่นี่เพราะมันถูกเรียกหลังจาก_initSelect()วิธีการMage_Catalog_Model_Resource_Product_Collectionที่ได้รับชื่อของตารางแบนตามรหัสร้านค้า เนื่องจาก ID ร้านค้ายังไม่ได้ตั้งค่าจะใช้ ID ร้านค้าปัจจุบัน ดังนั้นวิธีแก้ปัญหาที่ชัดเจนคือการตั้งค่า ID ร้านค้าปัจจุบันก่อนรับโมเดล Mage::app()->setCurrentStore($storeId); $collection = Mage::getResourceModel('catalog/product_collection'); มันจะทำงาน. แต่ถ้าคุณต้องการรับชุดหนึ่งครั้ง หากคุณต้องการรับคอลเล็กชันในลูปหรือคุณต้องการคอลเลกชันสองหลังถึงหลังคุณจะไม่สามารถตั้งค่าร้านค้าเฉพาะสำหรับพวกเขาได้ เหตุผลคือMage_Catalog_Model_Resource_Product_Flatคลาสนั้นมี_storeIdคุณสมบัติเป็นของตัวเองและใน Constructor นั้นจะถูกตั้งค่าเป็น ID ร้านค้าปัจจุบัน นั่นเป็นเหตุผลที่มันจะถูกตั้งค่าเป็นครั้งแรก ด้วยเหตุผลบางอย่าง (สวรรค์รู้ว่าฉันหวังว่าจะมีหนึ่ง) ในMage_Eav_Model_Entity_Collection_Abstract::_initแต่ละโมดูลทรัพยากรถูกเรียกเป็นซิงเกิล ดังนั้นไม่มี Constructor สำหรับการโทรครั้งที่สอง ทั้งหมดนี้ดูผิดไปมากจนฉันค่อนข้างมั่นใจว่าฉันผิดและไม่ใช่ Magento bug ตัวอื่น (หรือสองตัว) หวังว่าใครบางคนสามารถหลั่งน้ำตาแสงบนมัน

1
เกี่ยวกับ Collection Model และ Resource Model
ฉันสับสนเล็กน้อยเกี่ยวกับการใช้โมเดลทรัพยากรและโมเดลการรวบรวม บางครั้งเมื่อฉันเห็นตัวอย่างสำหรับการโหลดผลิตภัณฑ์โดยใช้คุณลักษณะเฉพาะในบางตัวอย่างพวกเขาใช้โมเดลการรวบรวมและบางครั้งพวกเขาใช้โมเดลทรัพยากร นอกจากนี้ฉันสามารถใช้วิธีการเฉพาะget...และset...พร้อมกับชื่อแถวของตารางได้เมื่อใด ชอบ,getName getIdฉันพยายามใช้ แต่ไม่สามารถรับค่าและแสดงข้อผิดพลาด: "การโทรไม่ได้กำหนดวิธีในวัตถุ" $product = Mage::getModel('catalog/product') ->loadByAttribute('name', 'product_name'); echo $product->getName(); echo $product->getSku(); มันแสดงให้เห็น "วิธีที่ไม่ได้กำหนดgetSku()" ถ้าฉันใช้var_dump($product)SKU จะแสดงเป็นวัตถุ แต่ไม่สามารถรับ SKU ที่ใช้getSku()...

5
ใช้ $ installer v $ this ในสคริปต์การติดตั้ง
ตกลงการใช้สคริปต์การติดตั้งดูเหมือนจะเป็นเรื่องแปลกที่จะใช้สิ่งต่อไปนี้: $installer = $this; ฉันไม่เข้าใจจริงๆเพราะซ้ำซ้อนอย่างสมบูรณ์ ทำไมไม่ใช้เพียง$this->ตลอดทั้งบท? มีความคิดเห็นใดเกี่ยวกับสาเหตุของการประชุมนี้

1
อะไรคือวิธีปฏิบัติที่ดีที่สุดใน Magento 2 สำหรับการสร้างความสัมพันธ์แบบหลายต่อหลายคน?
ฉันดูรอบแกนกลางและเห็นตัวอย่างของความสัมพันธ์แบบหลายต่อหลายถึงหลายแบบ แต่ฉันไม่เห็นคำตอบที่ชัดเจนเกี่ยวกับเรื่องนี้ ตัวอย่างเช่นสมมติว่าเราสร้างโมเดลใหม่และเราต้องการมีความสัมพันธ์แบบหลายต่อหลายกับตารางผลิตภัณฑ์ที่มีอยู่ ดังนั้นเราจึงมี Model - Stockist ใหม่ของเราและเราสร้าง 2 ตารางดังกล่าวหนึ่งรายการเพื่อเก็บชื่อ Stockist และอีกรายการหนึ่งเพื่อจัดเก็บความสัมพันธ์แบบหลายต่อหลายกับผลิตภัณฑ์ คลาสการตั้งค่าที่ถูกตัดทอน: $table = $setup->getConnection() ->newTable($installer->getTable('stockist')) ->addColumn('stockist_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['identity' => true, 'unsigned' => true, 'nullable' => false, 'primary' => true], 'Stockist Id') ->addColumn('name', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, null, ['nullable' => false], 'Stockist Name'); $table = $installer->getConnection() ->newTable($installer->getTable('stockist_product')) ->addColumn( 'entity_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, …

2
ทำไมคุณภาพเยี่ยมถึงใช้ทรัพยากรและการเก็บแบบจำลอง mysql4
จุดประสงค์ของการใช้ทั้งสองรุ่นนี้คืออะไร ทรัพยากร Mysql4 เหตุใดเราไม่สามารถใช้โมเดลทรัพยากรสำหรับคอลเลกชันทั้งหมด ทำไมเราใช้ MySql4 สำหรับโมดูลง่าย ๆ บางคนอธิบาย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.