Qiang Xue
11 years ago
4 changed files with 614 additions and 4 deletions
@ -0,0 +1,163 @@ |
|||||||
|
<?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"; ?> |
||||||
|
{ |
||||||
|
/** |
||||||
|
* @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(). |
||||||
|
// @todo 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. |
||||||
|
* |
||||||
|
* Typical usecase: |
||||||
|
* - Initialize the model fields with values from filter form. |
||||||
|
* - Execute this method to get CActiveDataProvider instance which will filter |
||||||
|
* models according to data in model fields. |
||||||
|
* - Pass data provider to CGridView, CListView or any similar widget. |
||||||
|
* |
||||||
|
* @return CActiveDataProvider the data provider that can return the models |
||||||
|
* based on the search/filter conditions. |
||||||
|
*/ |
||||||
|
public function search() |
||||||
|
{ |
||||||
|
// @todo 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, |
||||||
|
)); |
||||||
|
} |
||||||
|
|
||||||
|
<?php if($connectionId!='db'):?> |
||||||
|
/** |
||||||
|
* @return CDbConnection the database connection used for this class |
||||||
|
*/ |
||||||
|
public function getDbConnection() |
||||||
|
{ |
||||||
|
return Yii::app()-><?php echo $connectionId ?>;
|
||||||
|
} |
||||||
|
|
||||||
|
<?php endif?> |
||||||
|
/** |
||||||
|
* Returns the static model of the specified AR class. |
||||||
|
* Please note that you should have this exact method in all your CActiveRecord descendants! |
||||||
|
* @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); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,12 @@ |
|||||||
|
<?php |
||||||
|
/** |
||||||
|
* @var yii\base\View $this |
||||||
|
* @var yii\widgets\ActiveForm $form |
||||||
|
* @var yii\gii\generators\form\Generator $generator |
||||||
|
*/ |
||||||
|
|
||||||
|
echo $form->field($generator, 'tableName'); |
||||||
|
echo $form->field($generator, 'modelClass'); |
||||||
|
echo $form->field($generator, 'baseClass'); |
||||||
|
echo $form->field($generator, 'buildRelations')->checkbox(); |
||||||
|
echo $form->field($generator, 'commentsAsLabels')->checkbox(); |
Loading…
Reference in new issue