Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/03/2012, 06:20
chemajmb
 
Fecha de Ingreso: enero-2012
Ubicación: España
Mensajes: 150
Antigüedad: 12 años, 9 meses
Puntos: 0
ADOdb Active Record. Creando las clases.

Buenas, soy novato, estoy empezando a utilizar este ORM por primera vez y me esta llevando bastante tiempo definir una relacion 1 a 1 en una tabla a si misma.

La tabla categorias tiene una id principal y una fkidcategoria que indica el id de la categoria padre, osea una relacion 1 a 1 a si mismo.

Necesito ayuda. El codigo lo he distribuido asi, no se si esta bien.

Código PHP:
<?PHP
require_once ( DIR_LIBRERIAS_PRINCIPAL 'adodb5' DS 'adodb-active-record.inc.php' );

class 
claseModelo extends ADOdb_Active_Record{

    public function 
__construct($table false$pkeyarrfalse)
    {
        
$bd NewADOConnection('mysql');
        
//$bd->debug = true;
        //$bd->charSet = 'we8iso8859p1';
        
$bd->Connect(DB_HOSTDB_USERDB_PASSDB_NAME);
        
parent::__construct$table$pkeyarr$bd );
    }
    
}

?>
Código PHP:
class categoriaModelo extends claseModelo{
    
    function 
__construct(){
        
parent::__construct('categorias',array('id'));
        
ADODB_Active_Record::ClassBelongsTo('categoriaModelo''categorias''fkidcategoria''id''categoriaModelo'); 
    }
    

Pero no me funciona. El navegador se me queda atrapado.

¿ Donde o como debo colocar el ClassBelongsTo ?

Si lo pongo tal que asi

Código PHP:
class categoriaModelo extends claseModelo{
    
    function 
__construct(){
        
parent::__construct('categorias',array('id'));
    }
    
}
ADODB_Active_Record::ClassBelongsTo('categoriaModelo''categorias''fkidcategoria''id''categoriaModelo'); 
La clase se me carga asi osea que no parece que haga la relacion, pues si no estoy equivocado, he leido que cuando haces la relacion en el orm, este te carga el dato a null hasta que requieres la clase padre fkidcategoria, que es cuando te lo instancia y te lo referencia. Y como podemos ver el indice fkidcategoria no contiene una instancia de la clase categoriaModelo, si no un string con el valor 2 que es el id de la categoria padre.

Código:
object(categoriaModelo)[41]
  public '_dbat' => int 4
  public '_table' => string 'categorias' (length=10)
  public '_tableat' => string 'categorias' (length=10)
  public '_where' => null
  public '_saved' => boolean true
  public '_lasterr' => boolean false
  public '_original' => 
    array
      0 => string '3' (length=1)
      1 => string '2' (length=1)
      2 => string 'Comida humeda' (length=13)
      3 => string 'comida-humeda' (length=13)
      4 => null
      5 => string '0' (length=1)
      6 => string '1' (length=1)
  public 'foreignName' => string 'categoriamodelo' (length=16)
  public 'lockMode' => string ' for update ' (length=12)
  public 'id' => string '3' (length=1)
  public 'fkidcategoria' => string '2' (length=1)
  public 'nombre' => string 'Comida humeda' (length=13)
  public 'url_relativa' => string 'comida-humeda' (length=13)
  public 'descripcion' => null
  public 'visible' => string '0' (length=1)
  public 'activo' => string '1' (length=1)
Un saludo y gracias.

Última edición por chemajmb; 12/03/2012 a las 07:30