不幸的是,Laravel没有为此提供解决方案。你必须自己做。我做了一些挖掘,找到了这个答案
您可以使用该函数并将其转换为模型类中的方法...
class Page extends Eloquent {
public static function getPossibleStatuses(){
$type = DB::select(DB::raw('SHOW COLUMNS FROM pages WHERE Field = "type"'))[0]->Type;
preg_match('/^enum\((.*)\)$/', $type, $matches);
$values = array();
foreach(explode(',', $matches[1]) as $value){
$values[] = trim($value, "'");
}
return $values;
}
}
你这样使用它
$options = Page::getPossibleStatuses();
如果你愿意,你也可以让它更普遍地访问和通用。
首先,创建一个 .然后,所有模型都应从此类扩展BaseModel
class BaseModel extends Eloquent {}
之后,将此函数放在那里
public static function getPossibleEnumValues($name){
$instance = new static; // create an instance of the model to be able to get the table name
$type = DB::select( DB::raw('SHOW COLUMNS FROM '.$instance->getTable().' WHERE Field = "'.$name.'"') )[0]->Type;
preg_match('/^enum\((.*)\)$/', $type, $matches);
$enum = array();
foreach(explode(',', $matches[1]) as $value){
$v = trim( $value, "'" );
$enum[] = $v;
}
return $enum;
}
你这样称呼这个
$options = Page::getPossibleEnumValues('status');