[Dbix-class] Extending 'find' to include constant value for search query

Matt S Trout dbix-class at trout.me.uk
Fri Jun 22 14:26:54 GMT 2007


On Fri, Jun 22, 2007 at 10:04:49AM +1000, Charlie Garrison wrote:
> Good morning,
> 
> On 22/6/07 at 8:37 AM +0930, Jon Schutz <jon+dbix at youramigo.com> wrote:
> 
> >> So, first my question is, what is the best way to extend 
> >>find so  that I can restrict records using an additional 
> >>(constant) value  in the query? And if I should just override 
> >>'find', where do I  put my 'find' method?
> >
> >find is a ResultSet method; you need to create a ResultSet class that
> >inherits from DBIx::Class::ResultSet, put your find in there (and
> >probably search_rs too), and direct your schema to use that class by
> >adding
> >__PACKAGE__->resultset_class(...)
> >
> >into your schema (table declaration) class.
> 
> I found a similar explanation in the cookbook, but didn't think 
> that applied in this case (not sure why). Now that you've 
> clarified it, it makes perfect sense. I'll give that a go now.

Yeah, but it's still not what you want - you don't want to be overloading
find(), you want to be making sure the resultset you end up with has already
had the ->search applied to it, like I said in my previous e-mail.

Assuming you're doing this for user permission restrictions, you might
want a look at DBIx::Class::Schema::RestrictWithObject ...

-- 
      Matt S Trout       Need help with your Catalyst or DBIx::Class project?
   Technical Director    Want a managed development or deployment platform?
 Shadowcat Systems Ltd.  Contact mst (at) shadowcatsystems.co.uk for a quote
http://chainsawblues.vox.com/             http://www.shadowcatsystems.co.uk/ 



More information about the Dbix-class mailing list