[prev] [thread] [next] [Date index for 2005/08/11]
I'm confused about the way Ima::DBI stores statement handles. I was under the impression that when using set_sql(), the statement created would be data of the class that called set_sql(). The calling class would also inherit statement handles from classes further up the inheritance hierarchy. For instance, in the sample classes below (ripped from the CDBI perldoc) Music::Artist and Music::CD are at the same "level" in the inheritance tree. I even removed the has_many relationship between Artist and CD to be sure HasMany wasn't performing any trickery I didn't see. So, Music::Artist and Music::CD are essentially unrelated. I then added a statement to Music::CD with set_sql(). The script sql_names.pl uses both classes, retrieves their statement handles with sql_names() and displays them. I was not expecting the 'NewStatement' handle to be returned when calling Music::Artist->sql_names(). So what am I missing? Thanks, Patrick ---------- BEGIN SAMPLE ------------ package Music::DBI; use base 'Class::DBI'; __PACKAGE__->connection('dbi:mysql:dbname', 'username', 'password'); package Music::Artist; use base 'Music::DBI'; __PACKAGE__->table('artist'); __PACKAGE__->columns(All => qw/artistid name/); #__PACKAGE__->has_many(cds => 'Music::CD'); package Music::CD; use base 'Music::DBI'; __PACKAGE__->table('cd'); __PACKAGE__->columns(All => qw/cdid artist title year/); __PACKAGE__->set_sql(NewStatement => 'SELECT year FROM __TABLE__'); sql_names.pl: ------------- #!/usr/bin/perl use warnings; use Music::Artist; use Music::CD; print "Music::Artist sql_names:\n".join("\n", Music::Artist->sql_names)."\n\n"; print "Music::CD sql_names:\n".join("\n", Music::CD->sql_names)."\n"; sql_names.pl output: -------------------- Music::Artist sql_names: MakeNewObj update Nextval SearchSQL RetrieveAll Retrieve Flesh single DeleteMe NewStatement Music::CD sql_names: MakeNewObj update Nextval SearchSQL RetrieveAll Retrieve Flesh single DeleteMe NewStatement ---------- END SAMPLE ------------ __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com _______________________________________________ ClassDBI mailing list ClassDBI@xxxxx.xxxxxxxxxxxxxxxx.xxx http://lists.digitalcraftsmen.net/mailman/listinfo/classdbi
[CDBI] Ima::DBI Statement Handles
|
Generated at 13:17 on 19 Aug 2005 by mariachi v0.52