詳細を説明する前に、問題は、$c->model('ResultName')->search({k=>v}) を実行し、その has_many リレーションの結果をループすると、1 つしかないことです。データベースですが、永遠にループします。グーグルを試してみたところ、問題を解決した人が1人見つかりましたが、説明が短すぎました。彼のポストはここにありました。
基本的に私は3つのテーブルを持っています
Orders、OrderItems、Items。アイテムは利用可能なものです。注文は、1 人の人が欲しいアイテムのコレクションです。だから私はそれらすべてを次のようなもので結び付けることができます
注文から oi.order_item_id,oi.order_id,i.item_id を o として選択します。
DBIx::Class::Schema::Loader を実行し、適切な関係のように見えるものを取得しました
MyApp::Schema::Result::Order->has_many('order_items'...)
MyApp::Schema::Result::Items->has_many('order_items'...)
MyApp::Schema::Result::OrderItems->belongs_to('items'...)
私が試すテストで
my $orders = $schema->resultset('Order')->search({
'user_id'=>1
});
while(my $o = $orders->next) {
while(my $oi = $o->order_items->next) {
warn('order_item_id: '.$oi->order_item);
}
}
内側のループで無限にループします