X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=dbsrgits%2FDBIx-Class.git;a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSQLMaker.pm;h=66b6c735de4f4af692ff06bac16c509a6b7ea0c5;hp=7686ff0c099479226450dfdf175c37c5f6458a9e;hb=2bb4c37b6a5f36d851c4a8ee6f5791e179491fd0;hpb=b1efaea035dc99ee88fa2cc2b8973914f3bde782 diff --git a/lib/DBIx/Class/SQLMaker.pm b/lib/DBIx/Class/SQLMaker.pm index 7686ff0..66b6c73 100644 --- a/lib/DBIx/Class/SQLMaker.pm +++ b/lib/DBIx/Class/SQLMaker.pm @@ -27,9 +27,9 @@ Currently the enhancements to L are: =item * Support of C<...FOR UPDATE> type of select statement modifiers -=item * The -ident operator +=item * The L operator -=item * The -value operator +=item * The L operator =back @@ -496,6 +496,41 @@ sub _join_condition { 1; +=head1 OPERATORS + +=head2 -ident + +Used to explicitly specify an SQL identifier. Takes a plain string as value +which is then invariably treated as a column name (and is being properly +quoted if quoting has been requested). Most useful for comparison of two +columns: + + my %where = ( + priority => { '<', 2 }, + requestor => { -ident => 'submitter' } + ); + +which results in: + + $stmt = 'WHERE "priority" < ? AND "requestor" = "submitter"'; + @bind = ('2'); + +=head2 -value + +The -value operator signals that the argument to the right is a raw bind value. +It will be passed straight to DBI, without invoking any of the SQL::Abstract +condition-parsing logic. This allows you to, for example, pass an array as a +column value for databases that support array datatypes, e.g.: + + my %where = ( + array => { -value => [1, 2, 3] } + ); + +which results in: + + $stmt = 'WHERE array = ?'; + @bind = ([1, 2, 3]); + =head1 AUTHORS See L.