many to many help

[prev] [thread] [next] [Date index for 2004/06/07]

From: tbruner
Subject: many to many help
Date: 14:39 on 07 Jun 2004
After reading the docs and scanning this lists archives, I am left wondering how to accomplish the following.  

Database schema: (unessential columns omitted for brevity)

create table Things (
     ThingId integer unsigned not NULL auto_increment,
     node    varchar(80),
     ...
     primary key(ThingId)
);

create table Links (
     LinkId  integer unsigned not NULL auto_increment,
     linklable varchar(80),
     srcThingId integer unsigned,
     dstThingId integer unsigned,
     primary key (LinkId)
);

The idea for the database is to track the relationship between a set of "Things."

I have the following set up in a package:

package XYZ::DB;
use base qw(Class::DBI);
use warnings;
XYZ::DBI->connection(connection_details_omitted);

package XYZ::Things;
use base qw(XYZ::DB);
XYZ::Things->table('Things');
XYZ::Things->columns(All=>qw(ThingId node));
XYZ::Things->has_many(links => 'XYZ::Links');

package XYZ::Links;
use base qw(XYZ::DB);
XYZ::Links->table('Links');
XYZ::Links->columns(All=>qw(LinkId linklable srcThingId dstThingId));
XYZ::Links->has_a(srcThingId => 'XYZ::Things');
XYZ::Links->has_a(dstThingId => 'XYZ::Things');

Now in my program I am trying to delete a thing using the following:

my $obj = XYZ::Things->retrieve("7"); # get ThingId = 7, which exists in DB
$obj->delete;

When that snippet runs, I get the following error:

things is not a column of XYZ::Links at /usr/local/libdata/perl5/site_perl/Class/DBI/Relationship/HasMany.pm line 61

Can anyone shed some light on what I'm doing wrong?  Any help will be appreciated.

Thanks in advance,
Todd

many to many help
tbruner 14:39 on 07 Jun 2004

Generated at 11:34 on 01 Dec 2004 by mariachi v0.52