SQL::Translator::Schema::Field.3pm

Langue: en

Version: 2010-06-03 (ubuntu - 24/10/10)

Section: 3 (Bibliothèques de fonctions)

NAME

SQL::Translator::Schema::Field - SQL::Translator field object

SYNOPSIS

   use SQL::Translator::Schema::Field;
   my $field = SQL::Translator::Schema::Field->new(
       name  => 'foo',
       table => $table,
   );
 
 

DESCRIPTION

"SQL::Translator::Schema::Field" is the field object.

METHODS

new

Object constructor.
   my $field = SQL::Translator::Schema::Field->new(
       name  => 'foo',
       table => $table,
   );
 
 

comments

Get or set the comments on a field. May be called several times to set and it will accumulate the comments. Called in an array context, returns each comment individually; called in a scalar context, returns all the comments joined on newlines.
   $field->comments('foo');
   $field->comments('bar');
   print join( ', ', $field->comments ); # prints "foo, bar"
 
 

data_type

Get or set the field's data type.
   my $data_type = $field->data_type('integer');
 
 

sql_data_type

Constant from DBI package representing this data type. See ``DBI Constants'' in DBI for more details.

default_value

Get or set the field's default value. Will return undef if not defined and could return the empty string (it's a valid default value), so don't assume an error like other methods.
   my $default = $field->default_value('foo');
 
 

extra

Get or set the field's ``extra'' attibutes (e.g., ``ZEROFILL'' for MySQL). Accepts a hash(ref) of name/value pairs to store; returns a hash.
   $field->extra( qualifier => 'ZEROFILL' );
   my %extra = $field->extra;
 
 

foreign_key_reference

Get or set the field's foreign key reference;
   my $constraint = $field->foreign_key_reference( $constraint );
 
 

is_auto_increment

Get or set the field's "is_auto_increment" attribute.
   my $is_auto = $field->is_auto_increment(1);
 
 

is_foreign_key

Returns whether or not the field is a foreign key.
   my $is_fk = $field->is_foreign_key;
 
 

is_nullable

Get or set whether the field can be null. If not defined, then returns ``1'' (assumes the field can be null). The argument is evaluated by Perl for True or False, so the following are eqivalent:
   $is_nullable = $field->is_nullable(0);
   $is_nullable = $field->is_nullable('');
   $is_nullable = $field->is_nullable('0');
 
 

While this is technically a field constraint, it's probably easier to represent this as an attribute of the field. In order keep things consistent, any other constraint on the field (unique, primary, and foreign keys; checks) are represented as table constraints.

is_primary_key

Get or set the field's "is_primary_key" attribute. Does not create a table constraint (should it?).
   my $is_pk = $field->is_primary_key(1);
 
 

is_unique

Determine whether the field has a UNIQUE constraint or not.
   my $is_unique = $field->is_unique;
 
 

is_valid

Determine whether the field is valid or not.
   my $ok = $field->is_valid;
 
 

name

Get or set the field's name.
  my $name = $field->name('foo');
 
 

The field object will also stringify to its name.

  my $setter_name = "set_$field";
 
 

Errors (``No field name'') if you try to set a blank name.

full_name

Read only method to return the fields name with its table name pre-pended. e.g. ``person.foo''.

order

Get or set the field's order.
   my $order = $field->order(3);
 
 

schema

Shortcut to get the fields schema ($field->table->schema) or undef if it doesn't have one.
   my $schema = $field->schema;
 
 

size

Get or set the field's size. Accepts a string, array or arrayref of numbers and returns a string.
   $field->size( 30 );
   $field->size( [ 255 ] );
   $size = $field->size( 10, 2 );
   print $size; # prints "10,2"
 
   $size = $field->size( '10, 2' );
   print $size; # prints "10,2"
 
 

table

Get or set the field's table object. As the table object stringifies this can also be used to get the table name.
   my $table = $field->table;
   print "Table name: $table";
 
 
Returns the field exactly as the parser found it

equals

Determines if this field is the same as another
   my $isIdentical = $field1->equals( $field2 );
 
 

AUTHOR

Ken Youens-Clark <kclark@cpan.org>.