2010-03-21 18 views
7

Spesso utilizzo il modulo Viste di Drupal per creare SQL che incolli nel mio codice. Comprende abbastanza bene lo schema del database Drupal.Drupal Query builder

Esiste un modulo che possa darmi questa funzionalità o posso tenerlo fuori da Views?

risposta

3

sarebbe bello del modulo Vista è stato esteso per supportare meglio l'utilizzo programmatico, ma fino ad allora si potrebbe forse voler dare un'occhiata a uno dei miei colleghi tentativo di creare qualcosa di simile a una cosa del genere: http://github.com/hugowetterberg/query_builder

correlati a questo potrebbe essere il tentativo Servizi progetto offre una vista dei dati come un servizio, uno sforzo che abbiamo in questo momento si stanno separando fuori nel proprio modulo è di: http://drupal.org/node/709100 Potrebbe valere la pena di seguire poiché avrà bisogno di un certo livello di accesso programmatico a Views.

Un altro esempio di un modulo che sta accedendo Visualizzazioni programmazione è Seeds Sviluppo Litenode: http://developmentseed.org/blog/2009/feb/4/litenode

aggiornamento 15/12-2010: L'EntityFieldQuery in Drupal 7 è quasi come l'utilizzo di Vista a livello di codice per creare query - con la differenza che EntityQueryBuilder funziona solo su entità e campi e con ciò anche con il bonus che in realtà è in grado di compilare query su qualsiasi tipo di memoria di campo in uso - ad es. un database NoSQL come MongoDB. Esempio può essere trovato qui: http://drupal4hu.com/node/267

0

Sì, presumo visualizzazioni è il migliore per sapere quali tabelle vengono utilizzate per il campo corrente, perché molti moduli (e più in vista) hanno funzioni di hook, che forniscono alcune informazioni su questo campo, tabella e tipo di connessione con altri tabelle.

Inoltre si può leggere schema di tabelle e campi tramite: http://drupal.org/project/schema

1

Anche se questo non è il modo ideale per fare le cose, è possibile ottenere i risultati di una visualizzazione come segue:

$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; 
} 

In questo modo, ogni volta che si modifica la vostra vista interrogazione , non è necessario copiare nuovamente il codice. Sono d'accordo sul fatto che Views debba essere suddiviso in una query che costruisce API e un'interfaccia utente.

+2

La versione 2.8 del modulo visualizzazioni ha introdotto la funzione 'views_get_view_result ($ name, $ display_id = NULL)' per fare ciò. –

0

Sono curioso, perché utilizzare Views per creare SQL e quindi non utilizzare Views?

Quando si tratta di cose più difficili come molte a molte relazioni, GROUP BY, COUNT, SUM, subquerying ecc. A prescindere dalla funzione, è meglio scriverlo da soli (soprattutto se i moduli contrib non hanno supporto per le visualizzazioni e sono necessari più della tabella dei nodi).

Per quanto mi riguarda, quando Views non riesce a farlo, scrivo un semplice modulo che richiama hook_menu (per registrare i percorsi) con un callback che esegue l'interrogazione di cui ho bisogno.

+0

Penso a domande su quali tabelle sono stati estratti i dati drupal ... – Nikit

+0

Hai risposto tu alla domanda! "quando le viste non possono farcela" – Rimian