2012-03-30 3 views
0

Если я использую PDO и использовать FETCH_INTO какMapping MySQL имена столбцов на имена переменных

... 
$query->setFetchMode(PDO::FETCH_INTO, $this); 
$query->execute(); 

У меня есть небольшая проблема. Переменные PHP: camelCase, но имена столбцов MySQL: с символом подчеркивания. Поэтому у меня есть creationDate vs creation_date.

Должен ли я переименовать одну стороны уравнения, чтобы соответствовать другим один или сделать некоторые 1: 1 «отображение» с помощью __set магического способа (с переключателем команды)?

ответ

2

Взгляните на класс sfInflector Symfony в это делает ту же работу (в методе camelize):

http://trac.symfony-project.org/browser/branches/1.4/lib/util/sfInflector.class.php

Вот извлеченный код:

$tmp = $lower_case_and_underscored_word; 
$tmp = sfToolkit::pregtr($tmp, array('#/(.?)#e' => "'::'.strtoupper('\\1')", 
            '/(^|_|-)+(.)/e' => "strtoupper('\\2')")); 

И код из sfToolkit:

public static function pregtr($search, $replacePairs) 
{ 
    return preg_replace(array_keys($replacePairs), array_values($replacePairs), $search); 
} 
Смежные вопросы