Foros del Web » Programando para Internet » PHP » Zend »

Zend framewor y conexion a base de datos

Estas en el tema de Zend framewor y conexion a base de datos en el foro de Zend en Foros del Web. Hola , me surgue la siguiente duda... Tengo creada una : class Application_Model_DbTable_Grupos extends Zend_Db_Table_Abstract; y un class LoginController extends Zend_Controller_Action; si quiero hacer una ...
  #1 (permalink)  
Antiguo 04/03/2010, 04:26
 
Fecha de Ingreso: agosto-2009
Mensajes: 138
Antigüedad: 14 años, 8 meses
Puntos: 0
Zend framewor y conexion a base de datos

Hola , me surgue la siguiente duda...
Tengo creada una :

class Application_Model_DbTable_Grupos extends Zend_Db_Table_Abstract;
y un
class LoginController extends Zend_Controller_Action;
si quiero hacer una simple conexion a la base de datos con :

Código PHP:
try{

           
$db Zend_D::factory('Pdo_Mysql',array("host"      =>  "localhost",
                                
"port"      =>  "80",
                                
"username"  =>  "root",
                                
"password"  =>  "root",
                                
"db"        =>  "red"));
            echo 
$db->getConnection();
            
//Zend_Db_Table_Abstract::setDefaultAdapter($db);

        
}catch(Zend_Db_Exception $e){
            echo 
$e->getMessage();
        } 
y traer los datos de un simple campo , donde coloco el codigo anterior en la
class Application_Model_DbTable_Grupos extends Zend_Db_Table_Abstract.o en
class LoginController extends Zend_Controller_Action.
Ademas deberia quitar del aplication.ini los datos de la base de datos tales como

resources.db.adapter = PDO_MYSQL
resources.db.params.host = localhost
resources.db.params.username = root
resources.db.params.password = root
resources.db.params.dbname = red

Entiendo que si , porque ya estoy creando un adaptador y no necesitos cargarlos antes no....veo mucha documentacion y muchas maneras de generalo y me crea un poco de confusion ....gracias
Podeis poner un simple ejemplo , muchas gracias
  #2 (permalink)  
Antiguo 04/03/2010, 09:08
Avatar de SergeMedina  
Fecha de Ingreso: septiembre-2007
Ubicación: Guadalajara, Jalisco
Mensajes: 459
Antigüedad: 16 años, 7 meses
Puntos: 20
Respuesta: Zend framewor y conexion a base de datos

Puedes poner en tu bootstrap algo asi:

Código PHP:
Ver original
  1. public function _initDb()
  2. {
  3.       $db = Zend_D::factory('Pdo_Mysql',array("host"      =>  "localhost",
  4.                                 "port"      =>  "80",
  5.                                 "username"  =>  "root",
  6.                                 "password"  =>  "root",
  7.                                 "db"        =>  "red"));
  8.      Zend_Db_Table_Abstract::setDefaultAdapter($adapter);
  9. }

Aunque, ¿cual seria el proposito de hacer esto manual?
__________________
I see dead pixels
  #3 (permalink)  
Antiguo 04/03/2010, 09:33
 
Fecha de Ingreso: agosto-2009
Mensajes: 138
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Zend framewor y conexion a base de datos

Es que no tengo muy claro como se haria la conexion a base de datos, tengo que cargar un selcet con unos datos de un campo de la base de datos, pero claro veo que lo que he hecho no tiene mucho sentido....alguna sugerencia
  #4 (permalink)  
Antiguo 04/03/2010, 09:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Zend framewor y conexion a base de datos

Pues si ya tienes tu conexión simplemente es hacer el select:
Código PHP:
Ver original
  1. $sQuery = "SELECT * FROM foo";
  2. $aResults = $DB->fetchAll($sQuery);

Saludos.
  #5 (permalink)  
Antiguo 04/03/2010, 09:41
Avatar de SergeMedina  
Fecha de Ingreso: septiembre-2007
Ubicación: Guadalajara, Jalisco
Mensajes: 459
Antigüedad: 16 años, 7 meses
Puntos: 20
Respuesta: Zend framewor y conexion a base de datos

Lo que yo he hecho es crear metodos estaticos para acceder a listas de opciones de selects, ejemplo: si quiero obtener una lista de paises, en el modelo pais hago un metodo estatico para obtener la lista que necesito.

Código PHP:
Ver original
  1. static function getListaPais()
  2. {
  3.       $pais = new self();
  4.       return $pais->getMapper()->getListaPais();
  5. }

Obviamente no es la unica solución, pero es una sugerencia.
__________________
I see dead pixels
  #6 (permalink)  
Antiguo 04/03/2010, 10:53
 
Fecha de Ingreso: agosto-2009
Mensajes: 138
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Zend framewor y conexion a base de datos

hola tengo el siguiente codigo:

Código PHP:
class Application_Model_DbTable_Grupos extends Zend_Db_Table_Abstract
{

    protected 
$_name 'group_serv';
    protected 
$_primary 'Groups';
    public function 
init()
    {
     
      

    }
    public function 
listar(){

        return 
$this->fetchAll();
    }

Código PHP:
class Application_Model_GuestgroupMapper
{

   
    public function 
listar()
    {

        
$grupos = new Application_Model_DbTable_Grupos();
        
        return 
$grupos->listar();
       
    }

Código PHP:
class LoginController extends Zend_Controller_Action
{

    public function 
init()
    {
       
    }
  
    public function 
indexAction()
    {
        
// action body

       
$grupos = new Application_Model_GuestgroupMapper();
        
// Prepara un listado de las 10 últimas ciudades
        
$a $grupos->listar();
        
print_r($a);

pero el pint_r saca un chorizo enorme y yo solo quiero traer los grupos.esto es lo que saca:
Código:
end_Db_Table_Rowset Object ( [_data:protected] => Array ( [0] => Array ( [Groups] => G1 [Id] => S1-641023 ) [1] => Array ( [Groups] => G2 [Id] => D1-641022 ) ) [_table:protected] => Application_Model_DbTable_Grupos Object ( [_name:protected] => group_serv [_primary:protected] => Array ( [1] => Groups ) [_definition:protected] => [_definitionConfigName:protected] => [_db:protected] => Zend_Db_Adapter_Pdo_Mysql Object ( [_pdoType:protected] => mysql [_numericDataTypes:protected] => Array ( [0] => 0 [1] => 1 [2] => 2 [INT] => 0 [INTEGER] => 0 [MEDIUMINT] => 0 [SMALLINT] => 0 [TINYINT] => 0 [BIGINT] => 1 [SERIAL] => 1 [DEC] => 2 [DECIMAL] => 2 [DOUBLE] => 2 [DOUBLE PRECISION] => 2 [FIXED] => 2 [FLOAT] => 2 ) [_defaultStmtClass:protected] => Zend_Db_Statement_Pdo [_config:protected] => Array ( [host] => localhost [username] => root [password] => simec [dbname] => red [charset] => [persistent] => [options] => Array ( [caseFolding] => 0 [autoQuoteIdentifiers] => 1 ) [driver_options] => Array ( ) ) [_fetchMode:protected] => 2 [_profiler:protected] => Zend_Db_Profiler Object ( [_queryProfiles:protected] => Array ( ) [_enabled:protected] => [_filterElapsedSecs:protected] => [_filterTypes:protected] => ) [_defaultProfilerClass:protected] => Zend_Db_Profiler [_connection:protected] => PDO Object ( ) [_caseFolding:protected] => 0 [_autoQuoteIdentifiers:protected] => 1 [_allowSerialization:protected] => 1 [_autoReconnectOnUnserialize:protected] => ) [_schema:protected] => [_cols:protected] => Array ( [0] => Groups [1] => Id ) [_identity:protected] => 1 [_sequence:protected] => 1 [_metadata:protected] => Array ( [Groups] => Array ( [SCHEMA_NAME] => [TABLE_NAME] => group_serv [COLUMN_NAME] => Groups [COLUMN_POSITION] => 1 [DATA_TYPE] => varchar [DEFAULT] => [NULLABLE] => [LENGTH] => 20 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => 1 [PRIMARY_POSITION] => 1 [IDENTITY] => ) [Id] => Array ( [SCHEMA_NAME] => [TABLE_NAME] => group_serv [COLUMN_NAME] => Id [COLUMN_POSITION] => 2 [DATA_TYPE] => varchar [DEFAULT] => [NULLABLE] => [LENGTH] => 20 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) ) [_metadataCache:protected] => [_metadataCacheInClass:protected] => 1 [_rowClass:protected] => Zend_Db_Table_Row [_rowsetClass:protected] => Zend_Db_Table_Rowset [_referenceMap:protected] => Array ( ) [_dependentTables:protected] => Array ( ) [_defaultSource:protected] => defaultNone [_defaultValues:protected] => Array ( ) ) [_connected:protected] => 1 [_tableClass:protected] => Application_Model_DbTable_Grupos [_rowClass:protected] => Zend_Db_Table_Row [_pointer:protected] => 0 [_count:protected] => 2 [_rows:protected] => Array ( ) [_stored:protected] => 1 [_readOnly:protected] => )
que es lo que hago mal
  #7 (permalink)  
Antiguo 04/03/2010, 11:00
Avatar de SergeMedina  
Fecha de Ingreso: septiembre-2007
Ubicación: Guadalajara, Jalisco
Mensajes: 459
Antigüedad: 16 años, 7 meses
Puntos: 20
Respuesta: Zend framewor y conexion a base de datos

obviamente tu tienes que convertir esos datos en un array que entienda el elemento del formulario select.
__________________
I see dead pixels
  #8 (permalink)  
Antiguo 04/03/2010, 11:17
 
Fecha de Ingreso: agosto-2009
Mensajes: 138
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Zend framewor y conexion a base de datos

Alguna idea , estoy recien empezando en el framework....muchas gracias por todo de todas maneras
  #9 (permalink)  
Antiguo 04/03/2010, 12:08
Avatar de SergeMedina  
Fecha de Ingreso: septiembre-2007
Ubicación: Guadalajara, Jalisco
Mensajes: 459
Antigüedad: 16 años, 7 meses
Puntos: 20
Respuesta: Zend framewor y conexion a base de datos

Zend_Form_Elment_Select necesita un array en donde la llave es el valor del option y el valor del array es el texto que aparece en el elemnto option:


Código HTML:
Ver original
  1. <option val="$key">$value</option>
__________________
I see dead pixels
  #10 (permalink)  
Antiguo 05/03/2010, 03:11
 
Fecha de Ingreso: agosto-2009
Mensajes: 138
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Zend framewor y conexion a base de datos

Muchas gracias por todo, ya saque lo que queria y perdon por preguntar cosas tan basica...pero hay tanta informacion a veces y de hacerlo de tanta maneras distintas que al principio uno se lia un poco ....saludos y se puede cerrar el post

Etiquetas: conexion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:30.