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



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');

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";


AUTHOR

Ken Y. Clark <kclark@cpan.org>.

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