बिक्री_फ्लैट_ऑर्डर में कस्टम फ़ील्ड जोड़ना


14

मैं काफी हद तक गुगली, ट्रायल और एरर कर रहा हूं लेकिन मुझे समस्या का हल नहीं मिल रहा है।

  1. फ़ील्ड्स को बदलने की क्षमता और sales_order_grid का क्रम; तथा
  2. इस ग्रिड पर दो कस्टम फ़ील्ड प्रदर्शित करने की क्षमता (फिल्टर करने योग्य)।

Mage_Adminhtml_Block_Widget_Gridमेरे कस्टम मॉड्यूल (मैं पर्यवेक्षकों के बारे में जानता हूं, अभी तक अन्य स्थापित मॉड्यूल अपने पर्यवेक्षकों के साथ मेरे परिवर्तनों को ओवरराइड कर रहे थे ) का विस्तार करके, पूर्व (बिंदु 1) को हल किया गया है ।

भले ही, उत्तरार्द्ध मेरी वर्तमान समस्या है, नीचे दो तरीके हैं जो मुझे अब तक असफल रहे हैं।

विधि 1

<?php
/*  @var $this Mage_Sales_Model_Mysql4_Setup  */
$this->startSetup();
$connection = $this->getConnection();

/**
 * Create the payment method dropdown field, because this field _may_ be
 * used for searching we will create an index for it.
 */
$connection->addColumn(
    $this->getTable('sales/order_grid'),
    'x_payment_method',
    "ENUM('PayPal', 'SagePay') DEFAULT NULL"
);
$connection->addKey($this->getTable('sales/order_grid'), 'x_payment_type', 'x_payment_type');

/**
 * Create the order channel field to identify where the order was originally
 * generated from. Also add an index for this field for additional filtering.
 */
$connection->addColumn(
    $this->getTable('sales/order_grid'),
    'x_sale_channel',
    "ENUM('Amazon', 'Play', 'eBay', 'Website') NOT NULL DEFAULT 'Website'"
);
$connection->addKey($this->getTable('sales/order_grid'), 'x_sale_channel','x_sale_channel');

$this->endSetup();

विधि 2

इस बिंदु पर मैं उन्हीं 7 लेखों को पढ़कर थक गया था जिनसे मदद नहीं मिली, इसलिए मैंने वन फील्ड काम करने की कोशिश की; मैंने Magento में त्रुटि लॉग की भी जाँच की और पाया "$ यह-> getTable ()" गलत था, इस प्रकार मैंने इसे हटा दिया।

<?php
/*  @var $this Mage_Sales_Model_Mysql4_Setup  */
$this->startSetup();
$connection = $this->getConnection();

/**
 * Create the payment method dropdown field, because this field _may_ be
 * used for searching we will create an index for it.
 */
$this->addAttribute('sales_flat_order', 'x_test_option', array(
    'label' => 'X Test Option',
    'type' => 'varchar',
    'input' => 'select',
    'visible' => true,
    'required' => false,
    'position' => 1,
    'visible_on_front'  => false,
    'option' => array('value' => array('web', 'test 1', 'test 2')),
    'default' => array('web'),
));

$this->endSetup();

जो किसी को भीख मांगता है, एक कॉलम और एक विशेषता के बीच अंतर क्या है? मेरा प्रारंभिक अनुमान यह था कि, एक स्तंभ मौजूदा कोर तालिका में जोड़ा जाता है जबकि एक विशेषता EAV_ * तालिकाओं और उचित रूप से संबंधित से जोड़ा जाता है।


भले ही वह तालिका समतल हो, लेकिन इसके लिए संसाधन मॉडल EAV है, इसलिए इसे लिखा जाने के लिए EAV कॉन्फ़िगरेशन में विशेषता को पंजीकृत करना होगा। कई बिक्री संस्थाओं के लिए इस्तेमाल किया EAV हो सकता है लेकिन प्रदर्शन के कारणों के लिए बाहर चपटा कर रहे थे।
13

जवाबों:


11

आपका अनुमान सही है।
लेकिन sales_मेज के लिए वे एक समान हैं।
प्रारंभ में बिक्री संस्थाएँ EAV थीं। वे संस्करण 1.4.0.1 (मुझे लगता है) के साथ शुरू होने वाली फ्लैट टेबल में बदल गए। और पीछे की संगतता के लिए दोनों तरीकों को रखा गया था।
किसी भी अन्य फ्लैट टैबिल संस्थाओं (सेमी पेज, ब्लॉक, पोल) के लिए आप addAttributeकेवल उपयोग नहीं कर सकते हैं addColumn, लेकिन बिक्री के लिए यह दोनों तरीकों से काम करता है।
यदि आप एक विस्तार करने की योजना बनाते हैं जिसे 1.4 से पहले संस्करणों के साथ संगत होना है तो उपयोग करें addAttribute, अन्यथा मुझे इसमें कोई मतलब नहीं दिखता है।


जानकारी के लिए धन्यवाद मुझे यह वास्तव में उपयोगी लगता है। दरअसल, अब इसके बारे में सोचकर, मुझे लगता है कि सही तरीका तरीका है addColumn? Whilst भी 'getTable' का उपयोग नहीं कर रहा है क्योंकि sales_flat_order ही है। मैं कोशिश करूँगा कि शीघ्र ही, और एक जोरदार वापसी के साथ :)
राख

2
यह पता चला है कि मुझे दो समस्याएं थीं (एक जिसे मैंने अनदेखा किया); एक के $this->getTable('sales/flat_order')रूप में अच्छी तरह से सेट किया जा सकता था sales_flat_order; दूसरा था $connection->addKey($this->getTable('sales/order_grid'), 'x_payment_type', 'x_payment_type');; x_payment_typeहोना चाहिए था x_payment_method
राख
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.