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');
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 equivalent:
$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''.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";
parsed_field
Returns the field exactly as the parser found itequals
Determines if this field is the same as another
my $isIdentical = $field1->equals( $field2 );