我正在使用一个DB::CDBI
类来访问我们应用程序中的数据库。我们的项目是面向对象的 Perl。
package LT::LanguageImport;
use strict;
use warnings;
use base 'Misk5::CDBI';
__PACKAGE__->table( 'english_text_translation' );
__PACKAGE__->columns( Primary => qw/english language translation/ );
__PACKAGE__->columns( Essential => qw/english language translation/ );
__PACKAGE__->has_a( english => 'LT::EnglishLanguage' );
在这样一种情况下,我应该检查表中是否存在一行。我在CDBI调用中使用内置搜索 API 。
sub find_translation {
my $translation_exists_r_not = $class->search(
english => $english,
language => $language,
translation => $translation
);
return;
}
$translation_exists_r_not
正在根据搜索中给出的输入获得预期值。如果行存在,则_data
使用行详细信息进行更新。
$translation_exists_r_not = bless({
'_data' => [
{
'language' => 'polish',
'translation' => 'Admin',
'english' => 'admin'
}
],
'_place' => 0,
'_mapper' => [],
'_class' => 'LT::LanguageImport'
},
'Class::DBI::Iterator'
);
如果该行不存在,那么我会得到这样的返回值。
$translation_exists_r_not = bless({
'_data' => [],
'_place' => 0,
'_mapper' => [],
'_class' => 'LT::LanguageImport'
},
'Class::DBI::Iterator'
);
我想根据搜索结果translation
从这个 sub返回值。find_translation
我无法为此获得最佳状态。
我尝试将其复制_data
到一个数组中,但我不确定如何进一步进行。就像_data
一个空的arrayref和另一个条件一样,它在arrayref内会有一个hashref。
my @Arr = $translation_exists_r_not->{'_data'};