[support] Converting a query to D7
    Michael Prasuhn 
    mike at mikeyp.net
       
    Wed Oct 12 07:36:10 UTC 2011
    
    
  
Dipen wrote:
> http://upgrade.boombatower.com/tools/sql/inline
> 
> db_select('user_badges_roles', 'ubr')
>   ->fields('ubr', array('rid', 'ubb'))
>   ->join('user_badges_badges', 'ubb', 'ubb.bid = ubr.bid')
>   ->condition('ubr.rid', '@todo Set the appropriate argument.')
>   ->execute();
1. the fields section is plainly incorrect as it won't select any fields
from user_badges_badges and has an erroneous field from user_badges_roles
2. Join just returns the tables alias, not a select query object, so
it's not chainable.
Vaibhav Jain wrote:
> You can use this query like this
> $query = db_select('user_badges_roles', 'ubr')
>   ->fields('ubr', array('rid', 'ubb'))
>   ->join('user_badges_badges', 'ubb', 'ubb.bid = ubr.bid');
>
> $query = condition('ubr.rid', '@todo Set the appropriate argument.')
>   ->execute();
Same problem as number 1 above, and what on earth is the condition
function? I know of no procedural function in Drupal by that name.
Nancy, here's what you want:
$query = db_select('user_badges_roles', 'ubr');
$query->innerJoin('{user_badges_badges', 'ubb', 'ubb.bid = ubr.bid');
$result = $query->fields('ubr', 'rid')
  ->fields('ubb')
  ->condition('ubr.rid' $YOUR_ARGUMENT)
  ->execute();
There may be a more elegant way to get structure the query, but this
will get you the results you're looking for.
-Mike
__________________
Michael Prasuhn
mike at mikeyp.net
    
    
More information about the support
mailing list