logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

DBIx::Class::Schema::Loader::Manual::UpgradingFromV4 - Important Information Related to Upgrading from

Authors

       See "AUTHORS" in DBIx::Class::Schema::Loader.

Backward Compatibility

       In  backward  compatibility  mode,  the  Loader  will  use the old relationship names and types, will not
       singularize monikers for tables, and "use_namespaces" will be off.

       To control this behavior  see  "naming"  in  DBIx::Class::Schema::Loader::Base  and  "use_namespaces"  in
       DBIx::Class::Schema::Loader::Base.

   StaticSchemas
       When  reading  a  "Schema.pm"  from  a  static  schema generated with an 0.04 version of Loader, backward
       compatibility mode will default to on,  unless  overridden  with  the  "naming"  and/or  "use_namespaces"
       attributes.

   DynamicSchemas
       Dynamic schemas will always by default use 0.04006 mode and have "use_namespaces" off.

       To  upgrade  a  dynamic schema, set the "naming" and "use_namespaces" attributes (which is proxied to the
       loader) in your "Schema.pm":

           __PACKAGE__->naming('current');
           __PACKAGE__->use_namespaces(1);

License

       This library is free software; you can redistribute it and/or modify it under  the  same  terms  as  Perl
       itself.

perl v5.40.1                                       2025-03-22             DBIx::Class::Sc...UpgradingFromV4(3pm)

Name

       DBIx::Class::Schema::Loader::Manual::UpgradingFromV4 - Important Information Related to Upgrading from
       Version 0.04006

What Changed

       •   add_column

           The  new  Loader  detects much more information about columns and sets flags like "is_auto_increment"
           that it didn't set before.

       •   RelBuilder

           The new RelBuilder will give you nicer accessor names for relationships, so you will no  longer  have
           conflicts  between  a  foreign  key  column  and the relationship accessor itself (if the FK is named
           "_id".)

           It will also more correctly infer the relationship type, e.g. some relationships that were previously
           detected as a "has_many" will now be a "might_have" (when it  detects  a  unique  constraint  on  the
           foreign key column.)

           Also  "cascade_delete"  and  "cascade_copy"  are  turned  off  for  by  default  for  "has_many"  and
           "might_have"  relationships,  while  "belongs_to"  relationships  are  created  with  "on_delete   =>
           'CASCADE'" and "on_update => 'CASCADE'" by default. This is overridable via relationship_attrs.

       •   moniker_map

           Table names are now singularized when determining the "Result" class names. So the table "user_roles"
           would have become "UserRoles" in 0.04006 but now becomes "UserRole" instead.

       •   use_namespaces

           Now  defaults  to on. See "use_namespaces" in DBIx::Class::Schema::Loader::Base and "load_namespaces"
           in DBIx::Class::Schema.

       •   Support for more databases

           We now support Microsoft SQL Server and Sybase, and there are also many  improvements  to  the  other
           backends.

See Also