Magento 1 SQL क्वेरी


10

मैं अपनी कंपनी के लिए कुछ रिपोर्टिंग कार्यक्षमता स्थापित करने की प्रक्रिया में हूं, मैं Google, मोजेज और हमारे कूरियर की पसंद से डेटा एकत्र कर रहा हूं। रिपोर्टिंग के भाग के रूप में मैं भी Magento का डेटा प्राप्त करना चाहता हूं। चूंकि यह हमारे सर्वर पर एक बहुत ही सुरक्षित फ़ोल्डर में होस्ट किया जाएगा। मैं जानना चाहूंगा कि Magento Data पर क्वेरीज़ चलाने के लिए मेरे लिए सबसे सुरक्षित तरीका क्या है?

मैं भाग सकता हूँ

  • Magento के बाहर सीधे SQL क्वेरी

  • Magento के अंदर SQL क्वेरी लेकिन फिर उन्हें Magento से स्वचालित रूप से प्राप्त करने में समस्याएँ होंगी

  • Magento एपीआई

जो मैं अपनी वेबसाइट के लिए सुरक्षा और प्रदर्शन के दृष्टिकोण से सर्वश्रेष्ठ कर रहा हूं?

जवाबों:


18

हां, आप Magento के भीतर प्रत्यक्ष sql क्वेरी चला सकते हैं, इसका सबसे अच्छा तरीका यह है कि रीड राइट संसाधन का उपयोग करें। आप इसके साथ इसका बीमा कर सकते हैं:

    $ संसाधन = दाना :: getSingleton ('कोर / संसाधन');

    $ readConnection = $ resource-> getConnection ('core_read');

    $ लिखावट = $ संसाधन-> getConnection ('core_write');

चयन करने के लिए आप कुछ इस तरह से कर सकते हैं:

    $ readConnection = $ resource-> getConnection ('core_read');

    $ क्वेरी = 'का चयन करें * से'। $ संसाधन> getTableName ( 'सूची / उत्पाद');

    $ परिणाम = $ readConnection-> fetchAll ($ क्वेरी);

    / * परिणाम प्राप्त करें * /
    var_dump ($ परिणाम);

डेटाबेस के उपयोग के लिए कुछ लिखने के लिए:

    $ संसाधन = दाना :: getSingleton ('कोर / संसाधन');

    $ लिखावट = $ संसाधन-> getConnection ('core_write');

    $ तालिका = $ संसाधन-> getTableName ('कैटलॉग / उत्पाद');

    $ क्वेरी = "अद्यतन {$ तालिका} सेट {आइटम} = '{मूल्य}' WHERE अस्तित्व_ '= मूल्य" ";

    $ WriteConnection-> क्वेरी ($ क्वेरी);

आशा है कि यह आपके लिए मदद करता है।


धन्यवाद @Kay क्या आप जानते हैं कि Magento के बाहर db को क्वेरी करने से मेरे क्या परिणाम होंगे?
विल राइट

इतना नहीं, इसका सबसे अच्छा अभ्यास नहीं है। और आप विसंगतियों को कम कर सकते हैं लेकिन आम तौर पर कोई समस्या नहीं है। लेकिन अब आप इसे सभी वर्कफ़्लो में रखते हैं
Kay Int Veen

इन सभी प्रश्नों को कहां खोजें?
पार्थो

3
कृपया ध्यान रखें कि डेटाबेस में इस तरह से लिखना SQL इंजेक्शन भेद्यता का परिचय देता है । ऐसा तभी करें जब आप सुनिश्चित हों कि आपके मूल्य सुरक्षित हैं।
बैसप्लेपर bass

18

SQL इंजेक्शन से बचने के लिए ऐसा करने का अधिक उचित तरीका है।

$resource = Mage::getSingleton('core/resource');
$write = $resource->getConnection('core_write');
$table = $resource->getTableName('your/model');

आप बना सकते हैं:

$write->insert(
    $table, 
    ['column_1' => 1, 'column_2' => 2]
);

पढ़ें:

$select = $write->select()
    ->from(['tbl' => $table], ['entity_id', 'company'])
    ->join(['tbl2' => $table2], 'tbl.entity_id = tbl2.product_id', ['stuff'])
    ->where('name LIKE ?', "%{$name}%")
    ->group('company');
$results = $write->fetchAll($select);

अपडेट करें:

$write->update(
    $table,
    ['column_1' => 3, 'column_2' => 4],
    ['entity_id = ?' => 123]
);

हटाएँ:

$write->delete(
    $table,
    ['entity_id IN (?)' => [123, 456]]
);

एकाधिक डालें:

$rows = [
    ['col_1'=>'value1', 'col_2'=>'value2', 'col_3'=>'value3'],
    ['col_1'=>'value3', 'col_2'=>'value4', 'col_3'=>'value5'],
];
$write->insertMultiple($table, $rows);

डुप्लिकेट पर अपडेट डालें:

$data = [];
$data[] = [
    'sku' => $sku,
    'name' => $name
];
$write->insertOnDuplicate(
    $table,
    $data, // Could also be an array of rows like insertMultiple
    ['name'] // this is the fields that will be updated in case of duplication
);

2
अच्छा लगा। मुझे Magento में डेटाबेस क्वेरी लॉजिक सिखाया।
अनीस

1
वाह, काश मैं जानता था कि यह तब संभव था जब मैंने Magento पर काम करना शुरू किया था। महान व्याख्या!
एरिक सस्टैंडैंड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.