[Dbix-class] Fine-tuning of prefetched relationships

Peter Rabbitson rabbit+dbic at rabbit.us
Mon Apr 1 13:37:42 GMT 2013


On Mon, Apr 01, 2013 at 09:07:51AM -0400, Shea Levy wrote:
> On 04/01/2013 08:58 AM, Peter Rabbitson wrote:
> >On Mon, Apr 01, 2013 at 08:54:55AM -0400, Shea Levy wrote:
> >>Hi Peter,
> >>
> >>On 04/01/2013 08:46 AM, Peter Rabbitson wrote:
> >>>On Mon, Apr 01, 2013 at 08:43:43AM -0400, Shea Levy wrote:
> >>>>Hi all,
> >>>>
> >>>>In my db, a Project has many Jobs. I have a query on Projects where
> >>>>I want to:
> >>>>
> >>>>1. Sort the jobs of each project by a particular column on the Jobs table
> >>>>2. Only include jobs that satisfy some criterion, without excluding
> >>>>    projects where no such jobs exist (i.e. add a condition to JOIN ON,
> >>>>    not WHERE)
> >>>>
> >>>>Are either of these possible with a single search on Projects?
> >>>>Currently we're breaking it up into two queries.
> >>>Both are possible using usual syntax (and a custom-condition
> >>>relationship) in a single query using the 0.08242 or greater (not yet
> >>>released) version.
> >>So something like (using Catalyst in my project):
> >>
> >>$c->model('DB::Projects')->search({ "jobs.hidden" => 0} {order_by =>
> >>"jobs.name" })
> >>
> >Almost - jobs.hidden will produce a WHERE condition (what you do not
> >want). Instead you want to declare a *new* relationship like this:
> >
> >https://github.com/dbsrgits/dbix-class/blob/master/t/lib/DBICTest/Schema/Artist.pm#L53
> 
> Ah, I see. So I guess there's no way to do this without modifying
> the schema?

Not currently, however - what is so scary/undesirable about "modifying the schema" ?

That is a real question - you are not the first to word things thusly. I 
need to figure out where the fear to add an extra definition is coming 
from.

Cheers




More information about the DBIx-Class mailing list