我有 2 个表是 1 到 [0/1]。有没有办法使用Rose::DB::Object自动创建关系对象/行:
例如:
# detailed_summary is the 1-to-1 relationship
# if detailed_summary exist, get it
# if not, create a new one with links?
$obj->detailed_summary
也许是触发器?
我有 2 个表是 1 到 [0/1]。有没有办法使用Rose::DB::Object自动创建关系对象/行:
例如:
# detailed_summary is the 1-to-1 relationship
# if detailed_summary exist, get it
# if not, create a new one with links?
$obj->detailed_summary
也许是触发器?
列触发器不是您想要的。实现目标的一种方法是用前导下划线命名您的关系,然后编写自己的无下划线方法来执行“如果它尚不存在则制作”的事情:
sub detailed_summary
{
my($self) = shift;
my $existing_object = $self->_detailed_summary(@_);
unless($existing_object)
{
# Create a new object
my $new_object = My::Summary->new(...);
# Assign it to its parent so it will be stored in the
# database when the parent is save()d, then return it.
return $self->_detailed_summary($new_object);
}
return $existing_object;
}
您也可以通过在创建后包装生成的 detail_summary() 方法来执行相同的操作,可以手动(使用 typeglob 和子例程引用),也可以使用可以包装现有子例程的 CPAN 模块。
(上面的代码很常规,如果你经常这样做,你应该能够自动创建它。)