Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

DBIx::Class creating get_* and set_* methods

by Herkum (Parson)
on Feb 07, 2008 at 22:33 UTC ( [id://666868]=perlquestion: print w/replies, xml ) Need Help??

Herkum has asked for the wisdom of the Perl Monks concerning the following question:

I was looking to DBIx::Class to work with my database. The one thing I would like to change is the accessor/mutators that it auto generates. Instead of the typical,

# Accessor method $object->username; # mutator method $object->username('bob');

I want to methods that begin with 'get_' or 'set_' (depending on their functionality).

# Accessor method $object->get_username; # mutator method $object->set_username('bob');

Has anyone done anything for this for DBIx::Class?

Update:

I posted to the DBIx mailing list and here is a solution provided by 'Matt Trout' which is what I think I will go with...

No, because we're perl programmers, not Java programmers :) But it's not hard - you want to override register_column. Something li +ke sub register_column { my $class = shift; my ($col, $info) = @_; $info->{accessor} = undef; $class->mk_group_ro_accessors($col => "get_$col"); $class->mk_group_wo_accessors($col => "set_$col"); $class->next::method(@_); } should do the trick fine.

Replies are listed 'Best First'.
Re: DBIx::Class creating get_* and set_* methods
by LTjake (Prior) on Feb 08, 2008 at 03:10 UTC

    Unfortunately, I don't know of anything off-hand that will give you that effect. DBIC has an accessor "property" for each column, but that simply lets you rename the generated accessor .

    Perhaps you should ping the DBIC list about your question?

    --
    "Go up to the next female stranger you see and tell her that her "body is a wonderland."
    My hypothesis is that she’ll be too busy laughing at you to even bother slapping you.
    " (src)

      I noticed the accessor "property" too. The more I looked around, the more I noticed that ALL the ORM solutions seemed to use the same solution for auto-generating accessors.

      I was hoping someone had taken a look at 'scratching' that itch. but I might be out of luck.

      I will post to mailing list and maybe someone will have a solution

Re: DBIx::Class creating get_* and set_* methods
by emazep (Priest) on Feb 08, 2008 at 06:39 UTC
    DBIx::Class offers also the set_column and get_column accessors:
    $person->set_column('name', 'John'); $name = $person->get_column('name');
    It's not exactly what you were asking for, but just in case you feel more comfortable with the get/set prefixes anyway ;-)

    Update

    It must be specified that they don't have exactly the same semantics of the generated accessors (see the jrockway's reply and the DBIx::Class docs.)

    Cheers,
    Emanuele.
      Never use get_column and set_column directly unless you know what the side-effects are. They don't work the same way as using the accessors. Inflation is skipped, resultsets are not returned for relationships, etc.
        Never use get_column and set_column directly unless you know what the side-effects are.
        I would rather say "the absence of side-effects" ;-)
        (That's exactly why I often use them and I find them perfectly adequate to get the columns raw values.)

        Anyway you are right, I should have specified that's not exactly the same semantics of the generated accessors.

        Cheers,
        Emanuele.
Re: DBIx::Class creating get_* and set_* methods
by peterdragon (Beadle) on Feb 08, 2008 at 07:56 UTC
Re: DBIx::Class creating get_* and set_* methods
by Khen1950fx (Canon) on Feb 08, 2008 at 12:37 UTC

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://666868]
Approved by kyle
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (4)
As of 2024-08-10 17:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    When will the AI bubble burst?






    Results (22 votes). Check out past polls.

    Notices?
    erzuuli‥ 🛈The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.