[Dbix-class] search vs. find

Lee Standen nom at standen.id.au
Wed Jun 6 04:51:53 GMT 2007


It comes down to the purpose of the methods...

find() is intended for searches which return only a single result, so it 
makes sense to return a row, rather than a resultset.

search() is intended for searches which return multiple results.

Last I checked, find() needs you to specify your primary keys as the 
search terms, which guarantees uniqueness (primary keys have to be 
unique, remember?).  Note that primary key could be over two or tree 
columns :)

ktnxbye.




John Goulah wrote:
> On 6/5/07, *Brandon Black* <blblack at gmail.com 
> <mailto:blblack at gmail.com>> wrote:
> 
>     On 6/5/07, John Goulah <jgoulah at gmail.com
>     <mailto:jgoulah at gmail.com>> wrote:
>      > So I've noticed that search returns a "resultset"
>      > (MyApp::ResultSet::Tablename) and find returns a "row_object"
>      > (MyApp::Model::MyDB::Tablename).  I suppose this makes some
>      > sense since search may return many rows while find is designed to
>     find one
>      > row.  However it seems that its more useful to deal with the
>     resultset
>      > object, for example if I have defined my own custom resultset
>     functions
>      > within, I can reuse this returned object to call them, perhaps
>     even using
>      > some of the already populated fields as parts of the where clause
>     (such as a
>      > primary key like user_id).  Maybe not the best idea, but seems
>     easier than
>      > passing the same user_id into each query.   In any case, is there
>     any way to
>      > force/cast the "row_object" into a result set, or are we stuck
>     with only
>      > using search if we want a ResultSet back?
>      >
> 
>     If you want to find a single record, you use ->find(), if you want a
>     resultset which represents a single record, you use ->search({
>     pk_colname => "pk_value" });
> 
>     -- Brandon
> 
> 
> 
> Sure I understand that, I suppose more specifically then my question is 
> why not have one common object returned by both functions?     In any 
> case, I guess it doesn't matter much, I can just use search since it 
> seems thats what I need-
> 
> Thanks,
> John
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class
> Wiki: http://dbix-class.shadowcatsystems.co.uk/
> IRC: irc.perl.org#dbix-class
> SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/
> Searchable Archive: http://www.mail-archive.com/dbix-class@lists.rawmode.org/



More information about the Dbix-class mailing list