I am a DBIC beginner, but here's what I have learned: Your table classes should subclass DBIx::Class::Core (not DBIx::Class). And if you have methods that need to be called from a ResultSet class, then you should add also create Schema classes that subclass ResultSet.<br>
<br><div class="gmail_quote">On Wed, Aug 11, 2010 at 12:23 PM, Marc Perez <span dir="ltr"><<a href="mailto:markkus.80@gmail.com">markkus.80@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi,<br>
My name is Marc, I'm not use to write to the list but I have a problem<br>
which I dont know exactly how to solve.<br>
I have this two models:<br>
<br>
FIRST:<br>
package cmsDB::Files;<br>
use strict;<br>
use warnings;<br>
use base 'DBIx::Class';<br>
__PACKAGE__->load_components("Core");<br>
__PACKAGE__->table("files");<br>
__PACKAGE__->add_columns(<br>
"file_id",<br>
{ data_type => "INT", default_value => undef, is_nullable => 0, size => 10 },<br>
......<br>
__PACKAGE__->has_many(<br>
"fieldfiles",<br>
"cmsDB::Fieldfiles",<br>
{ "foreign.file_id" => "self.file_id" },<br>
);<br>
<br>
SECOND:<br>
package cmsDB::Fieldfiles;<br>
use strict;<br>
use warnings;<br>
use base 'DBIx::Class';<br>
__PACKAGE__->load_components("Core");<br>
__PACKAGE__->table("fieldfiles");<br>
__PACKAGE__->add_columns(<br>
"file_id",<br>
{ data_type => "INT", default_value => undef, is_nullable => 0, size => 10 },<br>
"language_id",<br>
{ data_type => "INT", default_value => undef, is_nullable => 0, size => 10 },<br>
"name",<br>
{<br>
data_type => "VARBINARY",<br>
default_value => undef,<br>
is_nullable => 1,<br>
size => 250,<br>
},<br>
........<br>
__PACKAGE__->set_primary_key("file_id", "language_id");<br>
__PACKAGE__->belongs_to("file_id", "cmsDB::Files", { file_id => "file_id" });<br>
__PACKAGE__->belongs_to(<br>
"language_id",<br>
"cmsDB::Languages",<br>
{ language_id => "language_id" },<br>
);<br>
<br>
<br>
I'm doing the next query:<br>
my $files = $catVar->model('cmsDB::Files')->search(<br>
{<br>
'me.cmsobj_id' => $this->cmsobj_id,<br>
-or => [mime_type => 'image/jpeg',mime_type =><br>
'image/gif',mime_type => 'image/png'],<br>
'fieldfiles.language_id' => $langId<br>
},<br>
{<br>
join => 'fieldfiles',<br>
prefetch => 'fieldfiles'<br>
}<br>
);<br>
<br>
When I try to access the fieldfiles data:<br>
<br>
while( my $file = $files->next() ) {<br>
print($file->fieldfiles->name)<br>
}<br>
<br>
I get the error:<br>
Can't locate object method "name" via package "DBIx::Class::ResultSet"<br>
<br>
If I dump $file->fieldfiles:<br>
<br>
$Data::Dumper::Indent = 3;<br>
$Data::Dumper::Maxdepth = 3;<br>
Dumper($file->fieldfiles->name)<br>
<br>
I get this:<br>
<br>
$VAR1 = bless( { '_source_handle' => bless( { 'source_moniker' =><br>
'Fieldfiles', 'schema' => bless( { 'class_mappings' =><br>
'HASH(0xa521c78)', 'source_registrations' => 'HASH(0xa5220c8)',<br>
'storage' => 'DBIx::Class::Storage::DBI::mysql=HASH(0xa52e4b8)' },<br>
'cmsDB' ) }, 'DBIx::Class::ResultSourceHandle' ), '_in_storage' => 1,<br>
'_column_data' => { 'link' => '', 'language_id' => '1', 'name' =><br>
'Jamón y Queso - Botiga', 'file_id' => '5', 'description' => '' } },<br>
'cms::Model::cmsDB::Fieldfiles' );<br>
<br>
<br>
Maybe Im doing something wrong...<br>
I would really appreciate any help.<br>
<br>
Thanks<br>
<br>
Marc Pérez<br>
<br>
_______________________________________________<br>
List: <a href="mailto:Catalyst@lists.scsys.co.uk">Catalyst@lists.scsys.co.uk</a><br>
Listinfo: <a href="http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst" target="_blank">http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst</a><br>
Searchable archive: <a href="http://www.mail-archive.com/catalyst@lists.scsys.co.uk/" target="_blank">http://www.mail-archive.com/catalyst@lists.scsys.co.uk/</a><br>
Dev site: <a href="http://dev.catalyst.perl.org/" target="_blank">http://dev.catalyst.perl.org/</a><br>
</blockquote></div><br><br clear="all"><br>-- <br>Bikewise: <a href="http://www.bikewise.org">http://www.bikewise.org</a><br><br>