|
|
|
Shawn Marincas
|
Hello, I'm having a trouble accessing resultsets through a many-to-many relationship defined by my schema. I have a products table and a categories table that are related many-to-many so that products can be in multiple categories. This is the example they give in the DBIx::Class::Manual::Cookbook for a straightforward configuration using ManyToMany is:
package My::User; Here is my configuration: package MyAppDB::Product; use base qw/DBIx::Class/; __PACKAGE__->load_components(qw/PK::Auto Core/); __PACKAGE__->table('Products'); __PACKAGE__->add_columns(qw/product_id name sku vendor_id price height width depth diameter color weight description info img_thumb img_large date_added shipping availability is_favorite importance/); __PACKAGE__->set_primary_key(qw/product_id/); # Vendor relationship __PACKAGE__->belongs_to(vendor => 'MyAppDB::Vendor', 'vendor_id'); # Category many-to-many relationship __PACKAGE__->has_many('product_categories' => 'MyAppDB::ProductCategoryLink', 'product_id'); __PACKAGE__->many_to_many('categories' => 'product_categories', 'category_id'); 1; package MyAppDB::ProductCategoryLink; use base qw/DBIx::Class/; __PACKAGE__->load_components(qw/PK::Auto Core/); __PACKAGE__->table('ProductCategoryLink'); __PACKAGE__->add_columns(qw/product_id category_id/); __PACKAGE__->set_primary_key(qw/product_id category_id/); # belongs_to(): __PACKAGE__->belongs_to(product => 'MyAppDB::Product', 'product_id'); # belongs_to(): __PACKAGE__->belongs_to(category => 'MyAppDB::Category', 'category_id'); 1; package MyAppDB::Category; use base qw/DBIx::Class/; __PACKAGE__->load_components(qw/PK::Auto Core/); __PACKAGE__->table('Categories'); __PACKAGE__->add_columns(qw/category_id name/); __PACKAGE__->set_primary_key(qw/category_id/); # Category many-to-many relationship __PACKAGE__->has_many('product_categories' => 'MyAppDB::ProductCategoryLink', 'category_id'); __PACKAGE__->many_to_many('products' => 'product_categories', 'product'); 1; In my Catalyst controller I try and access all the Products of a given Category like so: $c->stash->{products} = [$c->model('MyAppDB::Category')->search({ name => $category })->products]; And receive the following error:
I am using Catalyst 5.80007 on CentOS 5.0 x64 with MySQL 14.12... I have setup the database tables with the InnoDB engine and setup the foreign keys in the link table. I don't know what else I could be missing here... anyone have ideas where I could be going wrong? I'm a relatively new user of both Catalyst and DBIx::Class. Thanks so much. - Shawn Marincas _______________________________________________ List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ Searchable Archive: http://www.grokbase.com/group/dbix-class@... |
||||||||||||||||
|
fREW Schmidt
|
On Sat, Jul 11, 2009 at 3:15 PM, Shawn Marincas <[hidden email]> wrote:
Hello, I'm having a trouble accessing resultsets through a many-to-many relationship defined by my schema. I have a products table and a categories table that are related many-to-many so that products can be in multiple categories. This is the example they give in the DBIx::Class::Manual::Cookbook for a straightforward configuration using ManyToMany is: It's because you are doing a search, which returns a resultset, and you are using products, which would be chained off of the category class. You probably want to do something like this: $c->stash->{products} = [$c->model('MyAppDB::Category')->single({ name => $category })->products]; That will return the first (and presumably only) category that has the name you passed in. If you do have more than one category with that name you will get an error. In that case you could say first instead of single. HTH fREW Schmidt http://blog.afoolishmanifesto.com _______________________________________________ List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ Searchable Archive: http://www.grokbase.com/group/dbix-class@... |
||||||||||||||||
|
Shawn Marincas
|
Thank you kind sir, that worked spectacularly.
On Sat, Jul 11, 2009 at 2:31 PM, fREW Schmidt <[hidden email]> wrote:
_______________________________________________ List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ Searchable Archive: http://www.grokbase.com/group/dbix-class@... |
||||||||||||||||
| Free Embeddable Forum Powered by Nabble | Help |