2010-03-21 14 views
7

मैं अक्सर SQL कोड बनाने के लिए ड्रूपल के दृश्य मॉड्यूल का उपयोग करता हूं जिसे मैं अपने कोड में पेस्ट करता हूं। यह Drupal डेटाबेस स्कीमा काफी अच्छी तरह से समझता है।ड्रूपल क्वेरी बिल्डर

क्या कोई ऐसा मॉड्यूल है जो मुझे यह कार्यक्षमता देगा या क्या मैं इसे दृश्यों से बाहर कर सकता हूं?

उत्तर

3

दृश्य मॉड्यूल के शांत बेहतर समर्थन कार्यक्रम संबंधी उपयोग तक बढ़ा दिया गया होगा, लेकिन तब तक आप शायद एक पर एक नज़र लेने के लिए चाहते हो सकता है , एक सेवा के रूप दृश्य डेटा उपलब्ध कराने के http://github.com/hugowetterberg/query_builder इस के लिए

संबंधित सेवाएं प्रोजेक्ट प्रयास हो सकता है एक प्रयास है कि हम इसे अभी के स्वयं के मॉड्यूल में को अलग कर रहे हैं: मेरे साथियों में से ऐसी बात करने के लिए कुछ इसी तरह का निर्माण करने का प्रयास http://drupal.org/node/709100 कुछ हद तक इसकी आवश्यकता होने के बाद से लायक हो सकता है दृश्यों के लिए प्रोग्रामेटिक पहुंच। http://developmentseed.org/blog/2009/feb/4/litenode

अद्यतन 15/12-2010:

एक मॉड्यूल दृश्य प्रोग्राम के रूप में तक पहुँचने का एक और उदाहरण है विकास बीज Litenode है EntityFieldQuery Drupal 7 में लगभग प्रोग्राम के रूप में दृश्य का उपयोग करके क्वेरी का निर्माण करने की तरह है - अंतर किया जा रहा है कि EntityQueryBuilder केवल इकाइयों और क्षेत्रों पर काम करता है और इसके द्वारा बोनस के साथ भी यह वास्तव में उपयोग में किसी भी प्रकार के फील्ड स्टोरेज के खिलाफ प्रश्न बना सकता है - उदाहरण के लिए। मोंगोडीबी जैसे नोएसक्यूएल डेटाबेस। उदाहरण यहां पाया जा सकता है: http://drupal4hu.com/node/267

0

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

इसके अलावा, आप के माध्यम से टेबल और खेतों की योजना पढ़ सकते हैं: http://drupal.org/project/schema

1

हालांकि यह काम करने के लिए आदर्श तरीका नहीं है, इस प्रकार आप एक दृश्य के परिणाम प्राप्त कर सकते हैं:

$view = views_get_view('search'); 
$view->set_display('main'); 
$view->set_items_per_page(0); 
$view->execute(); 

$items = array(); 
foreach ($view->result as $row) { 
    $items[] = $row; 
} 

इस तरह, जब भी आप अपने विचारों क्वेरी को संशोधित , आपको कोड को फिर से कॉपी करने की आवश्यकता नहीं है। मैं सहमत हूं कि दृश्यों को एक क्वेरी बिल्डिंग एपीआई और यूआई में विभाजित करने की आवश्यकता है।

+2

दृश्य मॉड्यूल के 2.8 संस्करण ने ऐसा करने के लिए 'views_get_view_result ($ name, $ display_id = NULL) 'फ़ंक्शन पेश किया। –

0

मैं उत्सुक हूं- आप एसक्यूएल बनाने के लिए दृश्यों का उपयोग क्यों करेंगे, और फिर दृश्यों का उपयोग नहीं करेंगे?

जब कई रिश्तों, ग्रुप बाय, COUNT, एसयूएम, सबक्वायरींग इत्यादि जैसी कई कठिन चीजों की बात आती है, जो भी फ़ंक्शन कॉल करता है, तो इसे स्वयं लिखना सबसे अच्छा होता है (विशेष रूप से यदि contrib मॉड्यूल के पास कोई विचार नहीं है और आपको आवश्यकता है नोड टेबल से अधिक)।

मेरे लिए, जब दृश्य इसे पूरा नहीं कर पा रहे हैं, तो मैं एक साधारण मॉड्यूल लिखता हूं जो कॉलबैक के साथ hook_menu (पथ पंजीकृत करने के लिए) को आमंत्रित करता है जो मुझे आवश्यक पूछताछ करता है।

+0

मुझे लगता है कि कौन से टेबल ड्रूपल डेटा निकाले गए हैं, इस बारे में सवाल ... – Nikit

+0

आपने खुद से सवाल का जवाब दिया! "जब दृश्य इसे पूरा नहीं कर सकते हैं" – Rimian

संबंधित मुद्दे