X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FOrdered.pm;h=049d9c6b71d743db8d1e96f06b831b0c9b81f425;hb=49ca473e;hp=2cac812b69d676a25b6fc99a435145e4c386133f;hpb=a83cdbf22f334fddea92a3c52e068b755e30265a;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Ordered.pm b/lib/DBIx/Class/Ordered.pm index 2cac812..049d9c6 100644 --- a/lib/DBIx/Class/Ordered.pm +++ b/lib/DBIx/Class/Ordered.pm @@ -127,7 +127,7 @@ __PACKAGE__->mk_classdata( 'grouping_column' ); This method specifies a value of L which B during normal operation. When a row is moved, its position is set to this value temporarily, so -that any unique constrainst can not be violated. This value defaults +that any unique constraints can not be violated. This value defaults to 0, which should work for all cases except when your positions do indeed start from 0. @@ -921,7 +921,7 @@ module to update positioning values in isolation (i.e. without triggering any of the positioning integrity code). Some day you might get confronted by datasets that have ambiguous -positioning data (i.e. duplicate position values within the same group, +positioning data (e.g. duplicate position values within the same group, in a table without unique constraints). When manually fixing such data keep in mind that you can not invoke L like you normally would, as it will get confused by the wrong data before @@ -943,9 +943,23 @@ __END__ =head1 CAVEATS +=head2 Resultset Methods + +Note that all Insert/Create/Delete overrides are happening on +L methods only. If you use the +L versions of +L or +L, all logic present in this +module will be bypassed entirely (possibly resulting in a broken +order-tree). Instead always use the +L and +L methods, which will +invoke the corresponding L method on every +member of the given resultset. + =head2 Race Condition on Insert -If a position is not specified for an insert than a position +If a position is not specified for an insert, a position will be chosen based either on L or L, depending if there are already some items in the current group. The space of time between the @@ -956,14 +970,14 @@ will prevent such race conditions going undetected. =head2 Multiple Moves -Be careful when issueing move_* methods to multiple objects. If +Be careful when issuing move_* methods to multiple objects. If you've pre-loaded the objects then when you move one of the objects the position of the other object will not reflect their new value until you reload them from the database - see L. There are times when you will want to move objects as groups, such -as changeing the parent of several objects at once - this directly +as changing the parent of several objects at once - this directly conflicts with this problem. One solution is for us to write a ResultSet class that supports a parent() method, for example. Another solution is to somehow automagically modify the objects that exist