Hi

I want to implement such code

SELECT node.nid AS nid, somesqlfun(mytable.field1, mytable.field2) AS myfield
FROM node node
INNER JOIN mytable ON node.nid=mytable.nid

for this I use such php-code

function mymodule_views_data() {
  $data['mymodule']['table']['group'] = t('My Module');
  $data['mymodule']['table']['join']['node'] = array(
    'type' => 'INNER',
    'left_table'  => 'node',
    'left_field'  => 'nid',
    'table'  => 'mytable',
    'field' => 'nid',
  );
  $data['mymodule']['myfield'] = array(
    'real field' => 'somesqlfun(mytable.field1, mytable.field2)',
    'title' => t('My  field'),
    'help'  => t('My field description'),
    'field' => array(
      'handler'   =>  'views_handler_field',
      'click sortable' => true,
    ),
  );
}

as result I get wrong SQL query

SELECT node.nid AS nid, mytable.somesqlfun(mytable.field1, mytable.field2) AS myfield
FROM node node
INNER JOIN mytable ON node.nid=mytable.nid

How I must change $data array in hook_views_data() to correct?

Comments

kalx’s picture

Some notes. Need solution without write new handler class for each SQL function. May be only ONE handler class for worj with any SQL function.

dawehner’s picture

Status: Active » Fixed

If you want to use sql formula you have to write your own field handler.

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.