Ver Mensaje Individual
  #9 (permalink)  
Antiguo 19/04/2011, 07:14
Avatar de Triby
Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Duda con ORM casero

destor77, no se si todavia sigues trabajando con esto o estas cambiando a un ORM como doctrine o similar, pero a ver si puedo aportar algo:

Sugerencia 1: Detecta clave primaria por propiedad auto_increment
Código PHP:
Ver original
  1. //obtengo  la clave primaria
  2.             if( $command[$i]['Extra'] === "auto_increment" ) {
  3.                 $primary = $command[$i]['Field'];
  4.             }

Sugerencia 2: Permite establecer directamente la clave primaria
Código PHP:
Ver original
  1. // Por medio de una funcion
  2. public function ponerPrimaria($keyField) {
  3.         $this->keyField = $keyField;
  4. }
  5.  
  6. // Definiendolo desde la clase
  7. class usuario extends Modelo{
  8.     protected $table = 'usuarios';
  9.     protected $keyField = 'id';
  10.  
  11. }

Pero esto es poco flexible, porque imagino que habra alguna tabla que no requiera un campo auto incrementable y que ademas tenga la clave primaria se componga de dos o mas campos.

Como ejemplo, yo uso una tabla de configuracion de 3 campos:
cfg_module
cfg_variable
cfg_value
Clave primaria: cfg_module, cfg_variable

Supongo que tendrias que considerar que $this->keyField pueda ser array('campo1', 'campo2', ... 'campoN').

Aparte, si cada que se abre una pagina de tu sitio se va a realizar una consulta por cada tabla para extraer los campos, hay la posibilidad de que cuando tengas muchos visitantes se sature el servidor de bases de datos.

P.D. Justo estoy trabajando en una clase que me permita mantener por separado todas las consultas SQL, de forma que si cambio de MySQL a otro motor, solo tenga que copiar y adaptar este archivo. Curiosamente, lo que hice es muy similar a lo tuyo... pero no copie!!!
__________________
- León, Guanajuato
- GV-Foto