[support] DBTNG Confusion
Ms. Nancy Wichmann
nan_wich at bellsouth.net
Tue Oct 25 18:35:52 UTC 2011
Thanks. It works now. But I guess I can take Boombatowers conversions with a grain of salt.
Nancy
Injustice anywhere is a threat to justice everywhere. -- Dr. Martin L. King, Jr.
>________________________________
>From: Jamie Holly
>
>
>Doing a join doesn't return the query interface, but rather the alias that was assigned to the joined table. Since variable assignment is processed left to right once it processes the ::join method your $users variable now contains the table alias.
>
>What you want to do is stop your chaining before any methods that
don't return the SelectQuery object you are building:
>
>$query = db_select('user_badges_user', 'ubu')
> ->fields('u', array('uid', 'name'))
> ->condition('ubu.bid', $badge->bid); // Up to here you
get a SelectQueryInterface returned and assigned to query
>$query->join('users', 'u', 'u.uid = ubu.uid'); // Calls the join
method on $query, but doesn't assign the return;
>$users = $query->execute(); // Returns the
DatabaseStatementInterface that you pull your results from
>
>Generally I try to add joins at the beginning of the construction.
It seems to make it easier to read (it seems most of Drupal's core
code does the same), so I would write this query like this:
>
>$query = db_select('user_badges_user', 'ubu');
>$query->join('users', 'u', 'u.uid = ubu.uid');
>$query->fields('u', array('uid', 'name'))
> ->condition('ubu.bid', $badge->bid);
>$users = $query->execute();
>
>You could assign $users when you add the fields and conditions, but
this does make it easier if you want to add anything else to the
query down the road.
>
>Easiest thing to remember is that if you get a non-member/non-object
error, then the item right above that doesn't return the proper
class and you should stop variable assignment there and instead just
call the method without assignment (ie: $query->join('users',
'u', 'u.uid = ubu.uid')).
>
>Chaining might look a little better and save a few keystrokes, but
it really doesn't bring any performance enhancements and can keep
headaches to a minimum, especially when working on classes you
aren't that familiar with.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.drupal.org/pipermail/support/attachments/20111025/0b19a9b5/attachment.html
More information about the support
mailing list