2012-07-25 56 views
1

我试图做这样一个类似于创建相关数据:DBIx ::类的结果集,而不选择

$schema->resultset('Foo')->create({ Property => 1, 
             Bar => { 
               Property => 'non-unique', 
              }, 
             }); 

凡酒吧是一个belongs_to的关系到另一个表,酒吧,有一个自动递增的主键。

问题是,在幕后,dbix始终在Bar中选择并查找现有的行,并将该行的PK插入到Foo中。我希望它做的是每次使用新的自动生成的主键在Bar中创建一个新行。

有没有办法告诉DBIx不要先搜索匹配的相关行,而是强制它始终创建相关的行?

回答

2

create_related() or new_reated() 后者创建相关对象,前者创建对象并将其保存在数据库中。

因此,给予Foo->酒吧关系称为 '酒吧',更像是:

$foo = $schema->resultset('Foo')->create({ Property => 1 }); 
$bardata = {Property => 'non-unique'};        
$foo->create_related('bars', $bardata);