[CDBI] ChildOf

Kate Yoak kate at yoak.com
Tue Sep 13 20:55:56 BST 2005



> -----Original Message-----
> From: classdbi-bounces at lists.digitalcraftsmen.net
> [mailto:classdbi-bounces at lists.digitalcraftsmen.net]On Behalf Of
> Marcello
> Sent: Monday, September 12, 2005 2:40 AM
> To: Classdbi
> Subject: Re: [CDBI] ChildOf
>
>
> Kate Yoak ha scritto:
> >>This sounds useful, but I don't quite understand from your
> >>description how it
> >>differs from a has_a relationship from the child to the parent
> >>(other than it
> >>allows you to specify the accessor name for the parent). What am
> >>I missing?
> >>
> >>I implement similar parent/child relationships like so:
> >>
> >>Parent->columns('Primary' => qw/parent_id/);
> >>Parent->has_many(children => Child);
> >>Child->columns('Primary' => qw/child_id/);
> >>Child->columns('Others => qw/parent_id/);
> >>Child->has_a(parent_id => Parent);
> >>
> >>How does ChildOf simplify or improve on this?
> >>
> >>Thanks,
> >>Ed
> >>
> >
> >
> > Good point.  Forgot to explain.  The problem with has_a is that it takes
> > your primary column, your object id (that you are probably
> using everywhere
> > in urls, keys, etc) and turns it into a parent object.  That's
> not very nice
> > from two perspectives:
> >
> > #1.  I like my id where it is!  :-)  I mean, really - when I say <a
> > href="/?a_id=<%$link->link_id%>"> I expect a number to show up.
> (I believe
> > it actually will - because of stringify - but read on).
> >
> > #2.  I don't want to go to the database for the parent just because I am
> > accessing the child's id.
> >
> > OK.  So #1 actually works as-is.  Unless you have a custom
> stringify, your
> > $link->link_id in a string context should show up as a number.
> but it does
> > so by first going to the database , and then converting the
> result into the
> > number (the #2 issue).  What's worse is - I may choose to override
> > stringify - and break a completely independent module - that's
> not so good.
>
> Maybe I'm misunderstanding something, but my experience is this:
> the default stringification of an object gives me its primary key (which
> is usually an integer - let's suppose it's 'id integer auto_increment
> primary key'). If I use the object handle to refer to a particular table
> row and later I choose a different column for stringification I
> obviously don't get the primary key value anymore.
> But if I write:
> <a href="[%base _ controller _ '/view/' _ object->id%]">[%object%]</a>
> then I can choose how to stringify $object as I see fit, and still get
> the corrent href because I explicitly require the value of the object's
> primary key colyumn.
>
> HTH,
>
> Marcello
>
> >
> > All that said, has_a certainly has a place.  It is what gave me
> the idea,
> > and I used it heavily to figure out how to make my code work.
> >
> > I am looking forward to any disagreements to the arguments
> above.  I am very
> > new to cdbi (shame on me) and may miss something important.
> >
> >
> >
> > _______________________________________________
> > ClassDBI mailing list
> > ClassDBI at lists.digitalcraftsmen.net
> > http://lists.digitalcraftsmen.net/mailman/listinfo/classdbi
> >
>
>
> _______________________________________________
> ClassDBI mailing list
> ClassDBI at lists.digitalcraftsmen.net
> http://lists.digitalcraftsmen.net/mailman/listinfo/classdbi
>






More information about the ClassDBI mailing list