phalcon获取枚举值


phalcon get enum values

我使用的数据库有很多类型为"enum"answers"set"的列。我的重点是在Phalcon控制器中获取列的值。我在Phalcon中发现了一些片段,但什么都没有,当我试图执行它们时,Phalcon似乎有一些问题。

public function getEnumValues(){
    $sql  = "SHOW COLUMNS FROM profiles LIKE 'eyes_color'";
    $query = new 'Phalcon'Mvc'Model'Query($sql, $this->getDI());
    $result = $query->execute();
    return $result;
}

退货:

语法错误,意外的令牌IDENTIFIER(SHOW),在"COLUMNS FROM profiles LIKE"eyes_color"附近,分析时:SHOW COLUMNS FROM profiles LIKE'eyes_clor"

方法2:

public function getEnumValues(){
    $sql = "SELECT COLUMN_TYPE FROM COLUMNS WHERE TABLE_NAME = 'profiles' AND COLUMN_NAME = 'hair_color'";
    $query = new 'Phalcon'Mvc'Model'Query($sql, $this->getDI());
    $result = $query->execute();
    return $result;
}

退货:

无法加载型号"COLUMNS"

如果有任何帮助,我将不胜感激。

这是满足您需求的工作版本:

$config = $this->getDI()->get('config');
$pdo    = new 'Phalcon'Db'Adapter'Pdo'Mysql([
    "host"     => $config->database->host,
    "username" => $config->database->username,
    "password" => $config->database->password,
    "dbname"   => $config->database->dbname,
]);
$sql = "
    SELECT TRIM(TRAILING ')' FROM SUBSTRING(COLUMN_TYPE,6)) AS enum_list
    FROM information_schema.COLUMNS
    WHERE TABLE_SCHEMA='my_db_name'
        AND TABLE_NAME='my_table_name'
        AND COLUMN_NAME='my_column_name'
";
$result    = $pdo->query($sql)->fetch();
$enumArray = array();
if (!empty($result['enum_list'])) {
    $enumArray = explode(',', $result['enum_list']);
    foreach ($enumArray as &$value) {
        $value = trim($value, "'");
    }
}
echo "<pre>"; var_dump($enumArray); die;

你能从模型中的columnMap函数中得到你想要的吗?

$model = new Profile();
$columns = $model->columnMap();

这将返回一个所有列的数组。是否可以创建另一个类似的函数来只返回您想要的列?也许你想要实现的是更多的参与。

顺便说一句,我在使用modelManager时也出现了同样的错误。