57
* Obtiene instancia de query en funcion de la conexion
64
* Obtiene instancia de adaptador en funcion de la conexion (utiliza Singleton)
59
66
* @param string $connection conexion a base de datos en databases.ini
60
67
* @return DbAdapter
61
68
* @throw KumbiaException
63
public static function factory($connection=NULL)
70
public static function factory($connection = NULL)
65
// carga la conexion por defecto
72
// Carga la conexion por defecto
66
73
if (!$connection) {
67
74
$connection = Config::get('config.application.database');
70
// lee la configuracion de base de datos
71
$databases = Config::read('databases');
73
if(!isset($databases[$connection])) {
74
throw new KumbiaException("No existe la conexion $connection en databases.ini");
77
$database = $databases[$connection];
79
// genera el nombre de clase
80
$Class = ucfirst($database['type']) . 'Db';
82
// si no existe la clase la carga
83
if(!class_exists($Class, FALSE)) {
85
require CORE_PATH . "libs/ActiveRecord/db_pool/adapters/{$database['type']}_db.php";
88
return new $Class($connection);
77
// Si no existe el Singleton
78
if(!isset(self::$_adapters[$connection])) {
79
// Lee la configuracion de base de datos
80
$databases = Config::read('databases');
82
if(!isset($databases[$connection])) {
83
throw new KumbiaException("No existe la conexion $connection en databases.ini");
86
$database = $databases[$connection];
88
// Genera el nombre de clase
89
$Class = ucfirst($database['type']) . 'Db';
91
// Si no existe la clase la carga
92
if(!class_exists($Class, FALSE)) {
94
require CORE_PATH . "libs/ActiveRecord/db_pool/adapters/{$database['type']}_db.php";
97
// Instancia el adaptador
98
self::$_adapters[$connection] = new $Class($connection);
101
// Retorna el adaptador
102
return self::$_adapters[$connection];
100
114
$sqlArray = $dbQuery->getSqlArray();
102
// verifica si se indico una table
116
// Verifica si se indico una table
103
117
if(!isset($sqlArray['table'])) {
104
118
throw new KumbiaException("Debe indicar una tabla para efectuar la consulta");
146
160
protected function _insert($sqlArray)
148
//obtiene las columns
162
// Obtiene las columns
149
163
$columns = implode(', ', array_keys($sqlArray['data']));
150
//Parámetros enlazados para SQL PS
164
// Parámetros enlazados para SQL PS
151
165
$values = implode(', ', array_keys($sqlArray['bind']));
153
// verifica si esta definido el eschema
167
// Verifica si esta definido el eschema
154
168
if(isset($sqlArray['schema'])) {
155
169
$source = "{$sqlArray['schema']}.{$sqlArray['table']}";
168
182
protected function _update($sqlArray)
170
// Construte la pareja clave, valor para SQL PS
184
// Construye la pareja clave, valor para SQL PS
171
185
$values = array();
172
186
foreach(array_keys($sqlArray['data']) as $k) {
173
187
$values[] = "$k = :$k";
175
189
$values = implode(', ', $values);
177
// verifica si esta definido el eschema
191
// Verifica si esta definido el eschema
178
192
if(isset($sqlArray['schema'])) {
179
193
$source = "{$sqlArray['schema']}.{$sqlArray['table']}";
212
226
protected function _joinClausules($sqlArray, $sql)
215
229
if(isset($sqlArray['join'])) {
216
230
foreach($sqlArray['join'] as $join) {
217
231
$sql .= " INNER JOIN {$join['table']} ON ({$join['conditions']})";
221
// para left outer join
235
// Para left outer join
222
236
if(isset($sqlArray['leftJoin'])) {
223
237
foreach($sqlArray['leftJoin'] as $join) {
224
238
$sql .= " LEFT OUTER JOIN {$join['table']} ON ({$join['conditions']})";
228
// para right outer join
242
// Para right outer join
229
243
if(isset($sqlArray['rightJoin'])) {
230
244
foreach($sqlArray['rightJoin'] as $join) {
231
245
$sql .= " RIGHT OUTER JOIN {$join['table']} ON ({$join['conditions']})";
236
250
if(isset($sqlArray['fullJoin'])) {
237
251
foreach($sqlArray['fullJoin'] as $join) {
238
252
$sql .= " FULL JOIN {$join['table']} ON ({$join['conditions']})";