Sometimes a DBIC schema uses an alternative accessor instead of the actual column name, especially when working with legacy databases, e.g.
__PACKAGE__->add_columns(
"uco" => {
accessor => "username",
data_type => "text",
is_nullable => 0,
original => { data_type => "varchar" },
},
...
);
However, search conditions must use the actual column name, not the accessor. So the following will not work:
$rs->search( { username => { '!=', $row->username }, ... );
But HFH::Model::DBIIC uses the accessor instead of the actual name (from line 260):
my $accessor = $field->accessor;
my $count = $rs->search( { $accessor => $value, @id_clause } )->count;
You can work around this
use List::Util 1.29 qw/ pairmap /;
# These aliases could probably be saved in an attribute
my %aliases = pairmap { $b->{accessor} || $a => $a, $a => $a }
%{ $self->resultset->result_source->columns_info };
my $accessor = $field->accessor;
my $column = $aliases{ $accessor } || $accessor;
my $count = $rs->search( { $column => $value, @id_clause } )->count;
Sometimes a DBIC schema uses an alternative accessor instead of the actual column name, especially when working with legacy databases, e.g.
However, search conditions must use the actual column name, not the accessor. So the following will not work:
But HFH::Model::DBIIC uses the accessor instead of the actual name (from line 260):
You can work around this