我在我的應用程序中使用了Zend Framework
。我想知道如何從表中的ENUM字段獲取值。例如:permissions
字段(ENUM
('delete_admin','edit_admin'))。如何以最佳方式獲取數組('delete_admin','edit_admin')?
預先感謝您。Zend Mysql獲取ENUM值
2
A
回答
2
這是我做的:
在模型把這個
function getInfoTabella()
{
$data = $this->info(self::METADATA);
return $data;
}
然後使用此:
$model = new $model_name();
$description = $model->getInfoTabella();
$enum = $description[$FIELD_NAME]['DATA_TYPE'];
$inizia_enum = strpos($enum, "'");
$finisce_enum = strrpos($enum, "'");
if ($inizia_enum === false || $finisce_enum === false)
throw new Exception('errore enum database');
$finisce_enum -= $inizia_enum ;
$enum = substr($enum, $inizia_enum, $finisce_enum+1);
str_replace("'", '', $enum);
$enum = explode("," , $enum);
return $enum;
1
在Zend_Table類補充一點:
$adapter = $this->getDefaultAdapter();
$sql = 'SHOW COLUMNS FROM `table` LIKE `field`';
$result = $adapter->fetchRow($sql);
preg_match('=\((.*)\)=is' $options);
str_replace("'", '' $options[1]);
$options = explode(',', $options[1]);
3
我在下一步做了:
$metadata = $this->info(self::METADATA);
$typesString = $metadata['enum_column_name']['DATA_TYPE'];
preg_match("=\((.*)\)=is", $typesString, $parts);
$enumColumnValues = explode("','", trim($parts[1], "'"));
2
這是你如何可以從MySQL獲得一個爆炸就緒字符串:
SELECT REPLACE(TRIM(TRAILING ')' FROM (TRIM(LEADING 'enum(' FROM c.COLUMN_TYPE))), '\'', '')
FROM information_schema.`COLUMNS` c
WHERE c.COLUMN_NAME = 'enum_col'
你只需要在其上做了explode(',' $result)
讓您的枚舉值的數組。
請記住,您需要對information_schema-database進行讀取才能執行此操作。
0
向您的Zend_Db_Table_Abstract擴展類中添加一個方法。
public function getEnumValues($field) {
$metadata = $this->info(self::METADATA);
preg_match_all('/\'(?<item>.+?)\'/', $metadata[$field]['DATA_TYPE'], $matches);
return $matches['item'];
}
0
您的應用程序模型映射器的方法。假設your_field_name是需要列出ENUM值的數據庫列的名稱。
該方法返回一個包含your_field_name列的ENUM值的數組。
public function getAvailableEnumTypes() {
$this->your_model_name = new Application_Model_DbTable_YourModelName(); // DB table
$info = $this->your_model_name->info();
$dat = explode("','", preg_replace("/(enum\('|'\))/", "", $info['metadata']['your_field_name']['DATA_TYPE']));
return $dat;
}
相關問題
- 1. 獲取json/Enum值與jquery
- 2. 獲取JQL中Enum的值的計數
- 3. 如何使用Spring獲取Enum的值
- 4. 從自定義屬性獲取ENUM值
- 5. 獲取泛型Enum的底層值
- 6. 在異步任務<Enum>中返回Enum並獲取值
- 7. MySQL更改列ENUM值
- 8. Mysql空ENUM到postgresql ENUM
- 9. 如何從Enum獲取ImageIcon?
- 10. Enum:獲取密鑰列表
- 11. Codeigniter獲取MySQL值
- 12. 獲取Cookie的值與Zend框架
- 13. 如何在MySQL過程中獲得ENUM的值
- 14. 可能獲得mysql enum在java中提交的索引值?
- 15. MYSQL JOIN與MAX()ENUM的價值
- 16. 使用enum mysql切換按鈕值php
- 17. 爲什麼MySQL給ENUM值加1?
- 18. 獲取Zend的ACL
- 19. MySQL ENUM列類型
- 20. Hibernate,MySQL,Enum和NULL
- 21. 獲取不同的值mysql
- 22. MySQL的獲取上值
- 23. MySQL - 獲取最低值
- 24. PHP從mysql獲取int值
- 25. Rails mysql獲取舊值
- 26. MySQL獲取子查詢值
- 27. 從Mysql獲取隨機值
- 28. 從mysql獲取值到xml
- 29. 如何使用enum t獲取多個值?
- 30. 獲取與Enum關聯的字符串值?