2010-03-21 3 views
7

필자는 코드에 붙여 넣는 SQL을 만들기 위해 드루팔 (Drupal 's Views) 모듈을 사용합니다. 그것은 Drupal 데이터베이스 스키마를 아주 잘 이해합니다.Drupal Query builder

이 기능을 제공하는 모듈이 있습니까? 아니면 뷰에서이를 제외시킬 수 있습니까?

답변

3

이 더 나은 지원 프로그램 사용으로 확장 된 뷰 모듈의 멋진겠습니까, 그러나 그때까지 당신은 아마도 하나 살펴 보도록 할 수 있습니다 제 동료의 것과 비슷한 것을 만들려고 시도합니다 :

관련 자료 이것은 뷰 데이터를 서비스로 제공하려는 서비스 프로젝트 시도 일 수 있습니다. 우리는 지금 자신의 모듈로 분리하려고 노력하고 있습니다 : http://drupal.org/node/709100 그것이 어느 정도의 수준을 필요로 할 것이기 때문에 따라야 할 가치가있을 것입니다. 보기에 프로그래밍 방식으로 액세스합니다. http://developmentseed.org/blog/2009/feb/4/litenode

업데이트 15/12-2010 :

프로그램 뷰를 액세스하는 것 모듈의 또 다른 예는 개발 씨앗 Litenode입니다 드루팔 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 ($ name, $ display_id = NULL)'함수를 도입했습니다. –

0

나는 왜 뷰를 사용하여 SQL을 작성한 다음 뷰를 사용하지 않는지 궁금합니다.

많은 관계, GROUP BY, COUNT, SUM, 함수를 호출하는 하위 쿼리 등 더 어려운 일이 발생하면 직접 작성해야합니다 (특히 contrib 모듈에 뷰가 지원되지 않고 필요한 경우). 노드 표 이상).

나를 위해 Views를 완료 할 수없는 경우 필요한 쿼리를 수행하는 콜백으로 hook_menu (경로를 등록)를 호출하는 간단한 모듈을 작성합니다.

+0

나는 drupal datas가 표로 만들어진 테이블에서 질문을 생각합니다 ... – Nikit

+0

당신이 직접 질문에 대답했습니다! "Views가 완료되지 못할 때" – Rimian