[development] D6 hook_views_data, external DB

Wesley Nichols spanishwes at gmail.com
Thu Mar 17 13:22:10 UTC 2011


Hi Sean,

Thanks for the reply.  Looking at your code, I think I was thinking
backwards about how to describe the joins.  I did actually did have my
store_data table defined, but the join was backwards so it didn't
appear.

Now all is resolved, thanks again!

Wes



On Thu, 2011-03-17 at 08:41 -0400, Sean Dague wrote:
> I don't see a definition for the store_data table, just the definition 
> for the relationship.  You'll have to define the store_data table as 
> well, and the fields you are going to export to views, for you to be 
> able to get anything reasonable out of that table.
> 
> I've got code in a sandbox project that does this kind of thing for 2 
> custom tables if you are interested in looking at an example: 
> http://drupalcode.org/sandbox/sdague/1072704.git/blob/refs/heads/6.x-1.x:/includes/lending.views.inc
> 
> I'm still a little new at this, so there might be better examples, but 
> that works.
> 
> 	-Sean
> 
> On 03/17/2011 07:53 AM, Wesley Nichols wrote:
> > Hi Drupalistas,
> >
> > A little stumped on describing my tables to views in D6.  Specifically,
> > I can't figure out how to join tables correctly.  I am querying an
> > external database and I can retrieve info from the base table, but I
> > can't get the join to pull data from the joined table.
> >
> > 2 tables: client_data, store_data
> >
> > I am trying to join the tables on the 'store_id' key
> >
> > Currently, for my implementation of hook_views_data() I have:
> >    // Set group
> >    $data['client_data']['table']['group']  = t('CC Clients');
> >    // Define base table
> >    $data['client_data']['table']['base'] = array(
> >      'field' =>  'client_id',
> >      'title' =>  t('CC Clients'),
> >      'help' =>  t("View displays CC Clients."),
> >      'database' =>  'cc',
> >    );
> >    // Define table join
> >    $data['client_data']['table']['join'] = array(
> >      'store_data' =>  array(
> >        //Joined table key
> >        'left_field' =>  'store_id',
> >        'field' =>  'store_id',
> >      ),
> >    );
> >    //Numeric
> >    $data['client_data']['client_id'] = array(
> >      'title' =>  t('Client ID'),
> >      'help' =>  t('The numeric ID of the Client'),
> >      'field' =>  array(
> >        'handler' =>  'views_handler_field_numeric',
> >        'click sortable' =>  TRUE,
> >      ),
> >      'argument' =>  array(
> >        'handler' =>  'views_handler_argument_numeric',
> >        'numeric' =>  TRUE,
> >      ),
> >      'filter' =>  array(
> >        'handler' =>  'views_handler_filter_numeric',
> >      ),
> >      'sort' =>  array(
> >        'handler' =>  'views_handler_sort',
> >      ),
> >    );
> >    // Store Name (from join)
> >    $data['client_data']['store_name'] = array(
> >      'title' =>  t('Store Name'),
> >      'help' =>  t('Returns Store Name for a Store ID associated with a
> > Client'),
> >      'field' =>  array(
> >        'handler' =>  'views_handler_field',
> >        'click sortable' =>  TRUE,
> >      ),
> >      'sort' =>  array(
> >        'handler' =>  'views_handler_sort',
> >      ),
> >      'relationship' =>  array(
> >        'title' =>  t('Store Name'),
> >        'help' =>  t('The Store Name where registered.'),
> >        'base' =>  'store_data',
> >        'base field' =>  'store_id',
> >        'handler' =>  'views_handler_relationship',
> >        'label' =>  t('Store Name'),
> >      ),
> >    );
> >
> >
> > Expected result is: Client ID: 1, Store Name: MyStore #5
> > Actual result is: Client ID:1, Store Name: 5
> >
> > No join takes place.
> >
> > Any suggestions appreciated,
> > Thanks!
> >
> > Wes Nichols
> >
> >
> >
> >
> 
> 




More information about the development mailing list