Doctrine_Record::hasColumn() takes 4 arguments:

# **column name**
# **column type**
# **column length**
# **column constraints and validators**

<code type="php">
class Email extends Doctrine_Record {
    public function setTableDefinition() {
        // setting custom table name:
        $this->setTableName('emails');

        $this->hasColumn('address',         // name of the column
                         'string',          // column type
                         '200',             // column length
                         array('notblank' => true,
                               'email'    => true  // validators / constraints
                               )
                         );


        $this->hasColumn('address2',         // name of the column
                         'string',          // column type
                         '200',             // column length
                         // validators / constraints without arguments can be
                         // specified also as as string with | separator
                         'notblank|email'
                         );

        // Doctrine even supports the following format for
        // validators / constraints which have no arguments:

        $this->hasColumn('address3',         // name of the column
                         'string',          // column type
                         '200',             // column length
                         array('notblank', 'email')
                         );
    }
}
</code>

Note that validators / column constraints and the column length fields are optional.  The length may be omitted by using **null** for the length argument, allowing doctrine to use a default length and permitting a fourth argument for validation or column constraints.
