[Dbix-class] Fixing my relationships to get working queries

Peter Rabbitson rabbit+dbic at rabbit.us
Mon Jan 19 18:00:51 GMT 2015


On 01/19/2015 06:41 PM, John Stoffel wrote:
>
> Sorry, I'm expecting to get back consistent results.

I am not entirely sure how to interpret that... :)

>  I've actually
> given up trying to make multi-step join or prefetch work for me,
> because I was running out of time.

Sorry about that - the mailing list had issues, I only received your 
emails today.

> Just to refresh the conversation,
>
> ...
>
> I get this monstrosity:
>
>      SELECT me.name_id, me.full_name, me.last_name, me.first_name,
>      me.comments, account.account_id, account.account_number,
>      account.boxfolder_id, account.name_id, account.url, account.comments,
>      account.volume, account.box, account.folder, account.range FROM
>      (SELECT me.name_id, me.full_name, me.last_name, me.first_name,
>      me.comments FROM names me WHERE ( full_name REGEXP ? ) ORDER BY
>      full_name ASC LIMIT ?) me LEFT JOIN account account ON account.name_id
>      = me.name_id WHERE ( full_name REGEXP ? ) ORDER BY full_name ASC:
>      '[[:<:]]carpenter[[:>:]]', '10', '[[:<:]]carpenter[[:>:]]'

This (as you called it) "monstrosity" is there for a good reason. 
However I can't really explain it without the actual code that produced 
it (hint - the thing below is *not* what produced the above query - it 
is missing a rows => spec)

>
> my $rs = $schema->resultset('Name')->search({ full_name => { regexp =>
> 					      '[[:<:]]'.$name.'[[:>:]]' },
>                                              },
>                                              {
>                                               prefetch => [ 'account' ],
>                                               order_by => { -asc => 'full_name' },
>                                              });

If you have time and want to really understand what was going on - let's 
start over with an actual code/query example.

Cheers



More information about the DBIx-Class mailing list