[Dbix-class] problem with query using a column that doesn't exist
Guillermo Roditi
groditi at gmail.com
Tue Jul 11 23:55:32 CEST 2006
Hi, I am trying to execute the following query:
$user->groups->search_related('items', { contact_id => $contact->id })->delete;
which is generating this SQL:
DELETE FROM `djd_group_items` WHERE ( ( ( `contact_id` = ? ) AND (
`user_id` = ? ) ) )
which makes no sense because user_id doesnt exist on that table....
my table definitions are short and attached below. can anyone help? i
am deeply confused about this one. im running of -current right now
but it was failing with _05 as well.
### $user is a JidMap row object
package DJabberd::RosterStorage::Schema::JidMap;
use strict;
use warnings;
use base 'DBIx::Class';
__PACKAGE__->load_components("PK::Auto", "Core");
__PACKAGE__->table("djd_jidmap");
__PACKAGE__->add_columns("id", "jid");
__PACKAGE__->set_primary_key("id");
__PACKAGE__->add_unique_constraint(jid => ["jid"]);
#GroupItems
__PACKAGE__->has_many('in_roster_groups' =>
'DJabberd::RosterStorage::Schema::GroupItems',
'contact_id');
#Rosters
__PACKAGE__->has_many('roster_items' =>
'DJabberd::RosterStorage::Schema::Rosters',
'user_id');
__PACKAGE__->has_many('in_roster_of' =>
'DJabberd::RosterStorage::Schema::Rosters',
'contact_id');
#RosterGroups
__PACKAGE__->has_many('groups' =>
'DJabberd::RosterStorage::Schema::RosterGroups',
'user_id');
1;
## $user->groups is this resultset
package DJabberd::RosterStorage::Schema::RosterGroups;
use strict;
use warnings;
use base 'DBIx::Class';
__PACKAGE__->load_components("PK::Auto", "Core");
__PACKAGE__->table("djd_roster_groups");
__PACKAGE__->add_columns("id", "user_id", "name");
__PACKAGE__->set_primary_key("id");
__PACKAGE__->add_unique_constraint(user_name => ["id","name"]);
__PACKAGE__->belongs_to
('user' => 'DJabberd::RosterStorage::Schema::JidMap',
'user_id');
__PACKAGE__->has_many
('items' => 'DJabberd::RosterStorage::Schema::GroupItems',
'group_id');
1;
## and finally this is the related resultset
package DJabberd::RosterStorage::Schema::GroupItems;
use strict;
use warnings;
use base 'DBIx::Class';
__PACKAGE__->load_components("PK::Auto", "Core");
__PACKAGE__->table("djd_group_items");
__PACKAGE__->add_columns("group_id", "contact_id");
__PACKAGE__->set_primary_key("group_id","contact_id");
__PACKAGE__->belongs_to
('group' => 'DJabberd::RosterStorage::Schema::RosterGroups',
'group_id');
__PACKAGE__->belongs_to
('contact' => 'DJabberd::RosterStorage::Schema::JidMap',
'contact_id');
1;
More information about the Dbix-class
mailing list