ModelCode::generateRules PHP Method

generateRules() public method

public generateRules ( $table )
    public function generateRules($table)
    {
        $rules = array();
        $required = array();
        $integers = array();
        $numerical = array();
        $length = array();
        $safe = array();
        foreach ($table->columns as $column) {
            if ($column->isPrimaryKey && $table->sequenceName !== null) {
                continue;
            }
            $r = !$column->allowNull && $column->defaultValue === null;
            if ($r) {
                $required[] = $column->name;
            }
            if ($column->type === 'integer') {
                $integers[] = $column->name;
            } elseif ($column->type === 'double') {
                $numerical[] = $column->name;
            } elseif ($column->type === 'string' && $column->size > 0) {
                $length[$column->size][] = $column->name;
            } elseif (!$column->isPrimaryKey && !$r) {
                $safe[] = $column->name;
            }
        }
        if ($required !== array()) {
            $rules[] = "array('" . implode(', ', $required) . "', 'required')";
        }
        if ($integers !== array()) {
            $rules[] = "array('" . implode(', ', $integers) . "', 'numerical', 'integerOnly'=>true)";
        }
        if ($numerical !== array()) {
            $rules[] = "array('" . implode(', ', $numerical) . "', 'numerical')";
        }
        if ($length !== array()) {
            foreach ($length as $len => $cols) {
                $rules[] = "array('" . implode(', ', $cols) . "', 'length', 'max'=>{$len})";
            }
        }
        if ($safe !== array()) {
            $rules[] = "array('" . implode(', ', $safe) . "', 'safe')";
        }
        return $rules;
    }

Usage Example

Ejemplo n.º 1
0
 /**
  * Generates the rules for table fields.
  * #MethodTracker
  * This method overrides {@link ModelCode::generateRules}, from version 1.1.7 (r3135). Changes:
  * <ul>
  * <li>Adds the rule to fill empty attributes with null.</li>
  * </ul>
  * @param CDbTableSchema $table The table definition.
  * @return array The rules for the table.
  */
 public function generateRules($table)
 {
     $rules = array();
     $null = array();
     foreach ($table->columns as $column) {
         if ($column->autoIncrement) {
             continue;
         }
         if (!(!$column->allowNull && $column->defaultValue === null)) {
             $null[] = $column->name;
         }
     }
     if ($null !== array()) {
         $rules[] = "array('" . implode(', ', $null) . "', 'default', 'setOnEmpty' => true, 'value' => null)";
     }
     return array_merge(parent::generateRules($table), $rules);
 }