2010-03-21 57 views
7

我經常使用Drupal的Views模塊來構建SQL,將其粘貼到我的代碼中。它非常瞭解Drupal數據庫模式。Drupal查詢構建器

是否有一個模塊,可以給我這個功能,或者我可以將這個因素從視圖?

回答

3

會很酷Views模塊的延長,以更好地支持方案的使用,但在那之前,你可能也許想看看一個我的同事們試圖創造類似這樣的事情的東西:在提供瀏覽數據作爲一種服務http://github.com/hugowetterberg/query_builder

與此相關的可能是服務項目的嘗試,我們現在都分離出到它自己的模塊的努力:http://drupal.org/node/709100可能值得追隨,因爲它需要一定的水平編程訪問視圖。

多數民衆贊成編程方式訪問瀏覽模塊的另一個例子是發展種子Litenode:http://developmentseed.org/blog/2009/feb/4/litenode

更新15/12-2010:在Drupal 7 EntityFieldQuery幾乎就像使用視圖編程構建查詢 - 其差別在於EntityQueryBuilder僅適用於實體和領域,並且還因爲它實際上可以針對使用的任何類型的現場存儲構建查詢 - 例如,像MongoDB這樣的NoSQL數據庫。例如可以在這裏找到: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; 
} 

這樣一來,只要您修改意見查詢,您不必重新複製代碼。我同意視圖需要分解成查詢構建API和UI。

+2

2.8版本的意見模塊的推出了'views_get_view_result($名稱,$ display_id = NULL)'函數來做到這一點。 –

0

我很好奇 - 你爲什麼要用Views來構建SQL,然後不使用Views?

當談到像多對多關係,GROUP BY,COUNT,SUM,subquerying等更困難的事情時,最好自己編寫它(特別是如果contrib模塊沒有視圖支持,並且您需要多於節點表)。

對我來說,當視圖無法完成它,我寫一個簡單的模塊調用hook_menu(註冊路徑)與做我需要查詢一個回調。

+0

我認爲問題來自哪些表的Drupal的數據都是exctracted ...... – Nikit

+0

你回答自己的問題! 「當Views無法完成時」 – Rimian