it-swarm-eu.dev

Jak nahradím dotaz SQL pohledu?

Potřebuji přepsat dotaz SQL pohledu. Používám Drupal 7 a Views 3.x-7.x-alfa1.

Pochopil jsem, že mohu napsat svůj vlastní dotaz pomocí views_pre_execute. Postupoval jsem podle pokynů uvedených zde: http://blog.raisedeyebrow.com/2010/04/rewrite-a-views-query/ .

Tento kousek kódu jsem přidal do svého vlastního modulu.

function alterquery_views_pre_execute(&$view) {
  dsm($view);
}

Podle pokynů, když hledám hodnotu $view->build_info['query'], Vidím, že typ je objekt třídy SelectQuery.

Jak mohu získat úplnou kontrolu nad dotazem a použít svůj vlastní výrok?
Vím, že s hook_views_query_alter() mohu modifikovat klíčované pole, ale raději bych napsal příkaz select od nuly.

4
jjei

Nic vám nezabrání v budování vlastního objektu SelectQuery a nahrazování stávajícího. Je také možné přepsat plugin dotazu. V tomto případě by bylo nejlepší vědět, proč se pokoušíte nahradit celý dotaz. Dává mi to jen velmi malý smysl.

Také používáte alfa1? Proč? Tento kód je starý čtyři a půl měsíce. Před pokusem o cokoli jiného aktualizujte prosím -dev.

4
Bojan Zivanovic

Pokud si vytvoříte vlastní třídu zobrazení, můžete metodu execute () potlačit a dělat, co se vám bude líbit. Když se podíváte na moduly apachesolr_views nebo sparql_views , uvidíte, jak to právě dělají. Pohledy nepoužívají ani SQL.

3
Jeremy French

Z jakého důvodu jste nemohli implementovat hook_views_query_alter pro změnu samotného dotazu?

http://drupalcontrib.org/api/drupal/contributions--views--docs--views.api.php/function/hook_views_query_alter/7

1
Chris Cohen