<commit_before>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 arguement, allowing doctrine to use a default length and permitting a fourth arguement for validation or column constraints.<commit_msg>Bah, why must I suck at spelling :-p<commit_after>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.
{'fraction_non_alphanumeric': 0.08861454046639232, 'fraction_numerical': 0.006584362139917695, 'mean_word_length': 1.3003154574132492, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 19, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4115855', 'n_tokens_mistral': 792, 'n_tokens_neox': 729, 'n_words': 282}