diff options
| author | Patrick Seeger <pseeger@ccwn.org> | 2012-04-13 23:11:05 +0200 |
|---|---|---|
| committer | Patrick Seeger <pseeger@ccwn.org> | 2012-04-13 23:11:05 +0200 |
| commit | 341cc4dd9c53ffbfb863e026dd58549c1082c7a7 (patch) | |
| tree | 1bbbed20313bafb9b063b6b4d894fe580d8b000f /framework/gii/generators/model/templates/default | |
Diffstat (limited to 'framework/gii/generators/model/templates/default')
| -rw-r--r-- | framework/gii/generators/model/templates/default/model.php | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/framework/gii/generators/model/templates/default/model.php b/framework/gii/generators/model/templates/default/model.php new file mode 100644 index 0000000..46e185e --- /dev/null +++ b/framework/gii/generators/model/templates/default/model.php @@ -0,0 +1,145 @@ +<?php +/** + * This is the template for generating the model class of a specified table. + * - $this: the ModelCode object + * - $tableName: the table name for this class (prefix is already removed if necessary) + * - $modelClass: the model class name + * - $columns: list of table columns (name=>CDbColumnSchema) + * - $labels: list of attribute labels (name=>label) + * - $rules: list of validation rules + * - $relations: list of relations (name=>relation declaration) + */ +?> +<?php echo "<?php\n"; ?> + +/** + * This is the model class for table "<?php echo $tableName; ?>". + * + * The followings are the available columns in table '<?php echo $tableName; ?>': +<?php foreach($columns as $column): ?> + * @property <?php echo $column->type.' $'.$column->name."\n"; ?> +<?php endforeach; ?> +<?php if(!empty($relations)): ?> + * + * The followings are the available model relations: +<?php foreach($relations as $name=>$relation): ?> + * @property <?php + if (preg_match("~^array\(self::([^,]+), '([^']+)', '([^']+)'\)$~", $relation, $matches)) + { + $relationType = $matches[1]; + $relationModel = $matches[2]; + + switch($relationType){ + case 'HAS_ONE': + echo $relationModel.' $'.$name."\n"; + break; + case 'BELONGS_TO': + echo $relationModel.' $'.$name."\n"; + break; + case 'HAS_MANY': + echo $relationModel.'[] $'.$name."\n"; + break; + case 'MANY_MANY': + echo $relationModel.'[] $'.$name."\n"; + break; + default: + echo 'mixed $'.$name."\n"; + } + } + ?> +<?php endforeach; ?> +<?php endif; ?> + */ +class <?php echo $modelClass; ?> extends <?php echo $this->baseClass."\n"; ?> +{ + /** + * Returns the static model of the specified AR class. + * @param string $className active record class name. + * @return <?php echo $modelClass; ?> the static model class + */ + public static function model($className=__CLASS__) + { + return parent::model($className); + } + + /** + * @return string the associated database table name + */ + public function tableName() + { + return '<?php echo $tableName; ?>'; + } + + /** + * @return array validation rules for model attributes. + */ + public function rules() + { + // NOTE: you should only define rules for those attributes that + // will receive user inputs. + return array( +<?php foreach($rules as $rule): ?> + <?php echo $rule.",\n"; ?> +<?php endforeach; ?> + // The following rule is used by search(). + // Please remove those attributes that should not be searched. + array('<?php echo implode(', ', array_keys($columns)); ?>', 'safe', 'on'=>'search'), + ); + } + + /** + * @return array relational rules. + */ + public function relations() + { + // NOTE: you may need to adjust the relation name and the related + // class name for the relations automatically generated below. + return array( +<?php foreach($relations as $name=>$relation): ?> + <?php echo "'$name' => $relation,\n"; ?> +<?php endforeach; ?> + ); + } + + /** + * @return array customized attribute labels (name=>label) + */ + public function attributeLabels() + { + return array( +<?php foreach($labels as $name=>$label): ?> + <?php echo "'$name' => '$label',\n"; ?> +<?php endforeach; ?> + ); + } + + /** + * Retrieves a list of models based on the current search/filter conditions. + * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions. + */ + public function search() + { + // Warning: Please modify the following code to remove attributes that + // should not be searched. + + $criteria=new CDbCriteria; + +<?php +foreach($columns as $name=>$column) +{ + if($column->type==='string') + { + echo "\t\t\$criteria->compare('$name',\$this->$name,true);\n"; + } + else + { + echo "\t\t\$criteria->compare('$name',\$this->$name);\n"; + } +} +?> + + return new CActiveDataProvider($this, array( + 'criteria'=>$criteria, + )); + } +}
\ No newline at end of file |
