在我描述细节之前,问题是,我运行 $c->model('ResultName')->search({k=>v}) 并且当我循环它的 has_many 关系的结果时,只有一个数据库,但它永远循环。我试过谷歌搜索,发现一个人解决了这个问题,但对我的解释太简短了。他的职位在这里。
基本上我有3张桌子
订单、订单项和项目。物品是可用的。订单是一个人想要的物品的集合。所以我可以用类似的东西把它们绑在一起
select oi.order_item_id,oi.order_id,i.item_id from orders as o 内部连接 order_items as oi on oi.order_id = o.order_id 内部连接项目 as i on i.item_id = oi.item_id where blah blah blah ....
我运行了 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);
}
}
它在内循环上无限循环