ชนิดข้อมูลแบบ ENUM เป็นการเก็บข้อมูลลักษณะที่กำหนดค่าของข้อมูลไว้ล่วงหน้า อย่างเช่น รายชื่อจังหวัด ชนิดของผู้ใช้งาน เป็นต้น โดยมีการกำหนดลักษณะดังนี้
สร้างไฟล์ protected/components/ZHtml.php
class ZHtml extends CHtml
{
public static function enumItem($model,$attribute)
{
$attr=$attribute;
self::resolveName($model,$attr);
preg_match('/\((.*)\)/',$model->tableSchema->columns[$attr]->dbType,$matches);
foreach(explode(',', $matches[1]) as $value)
{
$value=str_replace("'",null,$value);
$values[$value]=Yii::t('enumItem',$value);
}
return $values;
}
public static function enumDropDownList($model, $attribute, $htmlOptions)
{
return CHtml::activeDropDownList( $model, $attribute,ZHtml::enumItem($model, $attribute), $htmlOptions);
}
}
สำหรับการใช้งานเปิดไฟล์ _form.php แล้วแก้ไขดังนี้
<?php echo CHtml::activeDropDownList( $model,'province',ZHtml::enumItem($model, 'province') ); ?>
หรือ
<?php echo ZHtml::enumDropDownList( $model,'province'); ?>
ที่มา: http://www.yiiframework.com/forum/index.php/topic/10079-enum-db-type-in-yii/
ความคิดเห็น