[Catalyst] Relationship layout

Will Smith willbelair at yahoo.com
Wed Oct 5 06:47:44 CEST 2005


Thanks Dan,
I follow the instruction and have all work nicely. I need to ad one line to the has_a relationship to make it work. Anyway, I still get some problem:
running the app under the built-in http, I cannot use perl script. So I need to have data display on the template. So if I have:
my $cd = music::M::CDBI::Cd->search(title=>'Blue');
 
In a perl script I could do : 
print "The CD: ",$cd->title," written by the: ",$cd->artistid->name,"\n";
 
But, how could I do the same thing on a template? And just to confirm this: the has_a,has_many relationship are defined in the myapp::M::CDBI::Mytable NOT IN myapp::C::CDBI::Mytable nor Myapp.pm
 
Thanks
Dan Boger <perl at peeron.com> wrote:
On Mon, Oct 03, 2005 at 07:15:37AM -0700, Will Smith wrote:
> Oh, my bad. Yes, I put it right after the package definition. I
> just pasted in the wrong place. I would re-phrase my question as:
> 
> Once I have this has-many relationship declared, how would I use
> it? And if I have more than one relationship to this one table,
> would I declare the same way?
> 
> Please give me a specific line of instruction.

Well, a really good example can be found here:

http://wiki.class-dbi.com/index.cgi?BeginnersGuide

(look in the relationships section).

In general, you declare the relationships with has_a and has_many, then
when you access those fields, instead of getting a scalar value, you get
CDBI objects back:

package Music::Artist;
__PACKAGE__->has_many(cds => 'Music::CD');
...

package Music::CD;
__PACKAGE__->has_a(artist => 'Music::Artist');
...

$artist = $cd->artist; # returns a Music::Artist object, for the artist of that CD.
@cds = $artist->cds; # returns an array of Music::CD objects

(code written in an email client should never be executed).

HTH! I'm sure the CDBI wiki and list would be able to explain it better
though.

Dan

-- 

_______________________________________________
Catalyst mailing list
Catalyst at lists.rawmode.org
http://lists.rawmode.org/mailman/listinfo/catalyst

		
---------------------------------
Yahoo! for Good
 Click here to donate to the Hurricane Katrina relief effort. 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.rawmode.org/pipermail/catalyst/attachments/20051004/5a7b2126/attachment.htm


More information about the Catalyst mailing list