X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=FS%2FFS%2FRecord.pm;h=f806e4f88acd4cd08dd9477b33074b8fc153fa30;hb=06707641b711d9218aba36dc70cf86146fa2acef;hp=5c8a322c92af34fe9c8bdaee139a07d7efa2666e;hpb=4def4da47df27f6982168220ec395e5580c32785;p=freeside.git 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