
You can feed the ->create method of dbix::class with a recursive datastructure and have the related records created. unfortunately you cannot do a similar thing with update_or_create.
dbix::class::resultset::recursiveupdate tries to fill that void.
it is a base class for dbix::class::resultset providing the method recursive_update which works just like update_or_create but can recursively update or create result objects composed of multiple rows.