[Moscow.pm] DBIx::Class. Это так и долно быть?
Yuri Pats
yu.pats на gmail.com
Пн Мар 15 00:45:42 PDT 2010
Привет. Прикольный баг/фича.
Чтоб избавиться я отнаследовался от DBIx::Class::ResultSet и
переопределил find как-то так:
sub find {
my $self = shift;
my $id = shift;
return unless $id;
$self->next::method($id, @_);
}
В схеме указываем default_resultset_class => 'наш отнаследованный класс'
PS Такой workaround прокатывает только, если вызывать find($id), для
более сложных usecases надо написать более сложный обработчик.
PPS В документации написано:
Return Value: $row_object | undef
:(
2010/3/15 Oleg Malyovaniyi <deer_oleg на mail.ru>:
> Поясните плиз, может кто сталкивался, почему так получается?
> $o ||= $c->model('DB::table')->new({});
>
> $o->set_columns({
>
> 'name' => ‘test’,
>
> });
>
> $o->insert_or_update;
>
>
>
> my $test = $c->model(' DB::table ')->find(undef,);
>
> print $test->name if $test;
>
> и оно печатает имя только что добавленной записи..
>
>
>
> если попробовать вот так:
>
> my $test = $c->model(' DB::table ')->find();
>
> то возвращает самую первую записть из таблицы.
>
>
>
> Мне интересно, можно ли это дело как то отключить?
>
> чтобы если ничего не указал – ничего не возвращало.
>
>
--
WBR, Yuri Pats
Подробная информация о списке рассылки Moscow-pm