2010-02-25 13 views
8

द्वारा निष्पादित क्वेरी को प्रदर्शित करने के लिए कैसे करें मैं ड्रूपल व्यू में निष्पादित क्वेरी को प्रदर्शित करना चाहता हूं। वर्तमान में दृश्य संपादक में यह क्वेरी दिखाता है हालांकि मुझे दृश्य के एक्सेल संस्करण को डाउनलोड करने के लिए मेरे कोड में उस क्वेरी का उपयोग करने की आवश्यकता है।ड्रूपल व्यू

क्या निष्पादित क्वेरी प्राप्त करने का कोई तरीका है जैसा कि दृश्य मेनू की "संपादक" विंडो में दिखाया गया है? मैं उस समय यह देखना चाहता हूं कि दृश्य दिखाया गया है।

मैं यहां क्या करने की योजना बना रहा हूं वह पाद लेख में क्वेरी को कैप्चर करना है, और उस क्वेरी को एक प्रक्रिया में पोस्ट किया गया है जो एक एक्सएलएस परिणामसेट वापस भेज देगा। इसलिए मैं परिणाम प्रदर्शित करने के लिए दृश्य का उपयोग कर सटीक क्वेरी चाहता हूं।

उत्तर

3

क्वेरी ऑब्जेक्ट में मौजूद है। आप इसे कहां उपयोग करना चाहते हैं, इस पर निर्भर करते हुए, आप वैरिएबल को प्रीप्रोसेस फ़ंक्शन, या उस स्थान पर जोड़ना चाहेंगे जिसे आप दृश्य में कॉल कर रहे हैं (यदि इसे प्रोग्रामिक रूप से कॉल किया जा रहा है)।

// ex. somewhere in your views-view--VIEW_NAME.tpl.php 
<?php print db_prefix_tables($view->build_info['query']); ?> 

सावधान रहो अपनी प्रक्रिया हालांकि मनमाने ढंग से एसक्यूएल लगता है, से कॉल करने के लिए बेहतर हो सकता है:

तुम सिर्फ इसके लिए डिफ़ॉल्ट टेम्पलेट उपयोग कर रहे हैं, हालांकि, तुम वहाँ यह करने के लिए उपयोग कर सकते हैं नाम देखें, और इसे प्रोग्रामिक रूप से आवश्यकतानुसार परिणाम उठाएं। या, अपने दृश्य पर एक माध्यमिक प्रदर्शन है जो परिणाम को एक्सएलएस परिणाम सेट में सीधे देता है।

+0

यह कम या ज्यादा मैं क्या चाहते हैं, लेकिन मैं view.tps.php बनाम "पाद लेख" में इस डाल करने के लिए कोशिश कर रहा हूँ लग रहा है। मैंने ग्लोबल्स $ व्यू जोड़ने की कोशिश की लेकिन यह कुछ भी नहीं लौटा। यह वादा करता है अगर मैं इसे काम कर सकता हूं। –

+0

वूट, मैं लगभग वहां हूं, मुझे फॉर्म डेटा के प्रतिस्थापन के लिए यह काम कर रहा है। क्या कमी है? $ current_view = views_get_current_view(); प्रिंट db_prefix_tables ($ current_view-> build_info ['query']); हालांकि, क्वेरी [एसक्यूएल क्लिपेड] के साथ वापस आती है जहां (node.status <> 0) और (node.type IN ('% s')) और (casetracker_case.case_status_id = '% s') node_comment_statistics_last_updated DESC द्वारा आदेश मुझे% s प्रतिस्थापन कैसे शामिल किया जा सकता है? –

+0

इसे query_args का उपयोग करके और sprintf के माध्यम से चलकर काम कर रहा है। धन्यवाद एक टन, तुमने मुझे बहुत काम बचाया। –

2

devel मॉड्यूल आपके लिए प्रश्न लॉग कर सकता है।

4

पीएचपी के पाद के इनपुट प्रारूप निर्धारित करें, और पाद पाठ में इस टुकड़ा चिपकाने:

<pre><?php 
    $v = views_get_current_view(); 
    $query = db_prefix_tables(vsprintf($v->build_info['query'], $v->build_info['query_args'])); 
    $replacements = module_invoke_all('views_query_substitutions', $v); 
    $query = str_replace(array_keys($replacements), $replacements, $query); 
    echo $query; 
?></pre> 

एक वाक्य रचना-हाइलाइट की गई क्वेरी (geshifilter.module का प्रयोग करके) के लिए निम्नलिखित स्निपेट का उपयोग करें:

<pre><?php 
    require_once drupal_get_path('module', 'geshifilter') .'/geshifilter.pages.inc'; 
    $v = views_get_current_view(); 
    $query = db_prefix_tables(vsprintf($v->build_info['query'], $v->build_info['query_args'])); 
    $replacements = module_invoke_all('views_query_substitutions', $v); 
    $query = str_replace(array_keys($replacements), $replacements, $query); 
    echo geshifilter_process($query, 'sql'); 
?></pre> 

(टिप्पणियों में @ मेच-सॉफ्टवेयर के साथ @ ओवेन के उत्तर और चर्चा से स्टेमड।)

0

स्क्रीन पर क्वेरी देखने के लिए कैसे आउटपुट करें।

यह Drupal में मेरे लिए काम करता 7.

पर जाएँ:

विचारों/plugins/views_plugin_query_default.inc

इस समारोह पाते हैं:

/** 
* Generate a query and a countquery from all of the information supplied 
* to the object. 
* 
* @param $get_count 
* Provide a countquery if this is true, otherwise provide a normal query. 
*/ 
function query($get_count = FALSE) { 

सिर्फ बहुत अंत से पहले समारोह के, डीपीक्यू ($ क्वेरी) का उपयोग करें;

// Add all query substitutions as metadata. 
    $query->addMetaData('views_substitutions', module_invoke_all('views_query_substitutions', $this)); 
dpq($query); 
    return $query; 
    } 
0

एक तरफ ध्यान दें, एक्सेल निर्यात के लिए के रूप में, आप दृश्य डेटा निर्यात मॉड्यूल की कोशिश की?

6

या आप devel के dpq समारोह के साथ hook_views_pre_execute उपयोग कर सकते हैं:

function MY_MODULE_views_pre_execute(&$view) { 
    dpq($view->build_info['query']); 
}