From: ivan Date: Tue, 12 Jul 2005 09:13:19 +0000 (+0000) Subject: patch from rjbs to add by_key contructor to Record.pm X-Git-Tag: BEFORE_FINAL_MASONIZE~441 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=06707641b711d9218aba36dc70cf86146fa2acef patch from rjbs to add by_key contructor to Record.pm --- diff --git a/CREDITS b/CREDITS index e2ebcd282..0e6059909 100644 --- a/CREDITS +++ b/CREDITS @@ -150,5 +150,8 @@ by Foteos Macrides (derived from overLIB by Erik Bosrup), licensed under the terms of the Artistic license . +Ricardo SIGNES has contributed a bunch of +patches to clean up and refactor various stuff in the module layer. Thanks! + Everything else is my (Ivan Kohler ) fault. diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm index 5c8a322c9..f806e4f88 100644 --- a/FS/FS/Record.pm +++ b/FS/FS/Record.pm @@ -427,6 +427,34 @@ sub qsearch { return @return; } +=item by_key PRIMARY_KEY_VALUE + +This is a class method that returns the record with the given primary key +value. This method is only useful in FS::Record subclasses. For example: + + my $cust_main = FS::cust_main->by_key(1); # retrieve customer with custnum 1 + +is equivalent to: + + my $cust_main = qsearchs('cust_main', { 'custnum' => 1 } ); + +=cut + +sub by_key { + my ($class, $pkey_value) = @_; + + my $table = $class->table + or croak "No table for $class found"; + + my $dbdef_table = $dbdef->table($table) + or die "No schema for table $table found - ". + "do you need to create it or run dbdef-create?"; + my $pkey = $dbdef_table->primary_key + or die "No primary key for table $table"; + + return qsearchs($table, { $pkey => $pkey_value }); +} + =item jsearch TABLE, HASHREF, SELECT, EXTRA_SQL, PRIMARY_TABLE, PRIMARY_KEY Experimental JOINed search method. Using this method, you can execute a