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' );
そのようなシナリオの 1 つで、テーブルに行が存在するかどうかを確認することになっています。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
このサブからの値を返したいです。find_translation
これではベストコンディションが取れません。
を配列にコピーしようとし_data
ましたが、さらに先に進む方法がわかりません。_data
空の配列参照と別の条件になるため、配列参照内にハッシュ参照が含まれます。
my @Arr = $translation_exists_r_not->{'_data'};