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

doctrine y codeigniter como manejar las conecciones?

Estas en el tema de doctrine y codeigniter como manejar las conecciones? en el foro de CodeIgniter en Foros del Web. Hola, no sabia como colocar el titulo a este post asi disculpen si no es lo que esperan del contenido. Bien, estoy trabajando con codeigniter ...

  #1 (permalink)  
Antiguo 14/01/2011, 20:27
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 4 meses
Puntos: 4
doctrine y codeigniter como manejar las conecciones?

Hola, no sabia como colocar el titulo a este post asi disculpen si no es lo que esperan del contenido.

Bien, estoy trabajando con codeigniter y logre hacer que se añadiera doctrine como plugin. Mi intencion es hacer una capa de abstraccion de bases de datos y entendi que doctrine hace eso.

Ya he probado con la coneccion a una base de datos mysql lo cual funciona correctamente, ahora intente hacer con postgres y existen errores.

Quiero añadir que probe conectar una aplicacion que tengo con postgres pero sin doctrine como plugin y si funciona.

Los errores que me muestra son:

Cita:
Fatal error: Uncaught exception 'Doctrine_Manager_Exception' with message 'Unknown driver postgre' in /opt/lampp/htdocs/doctrine/application/plugins/doctrine/lib/Doctrine/Manager.php:439 Stack trace: #0 /opt/lampp/htdocs/doctrine/application/plugins/doctrine/lib/Doctrine/Manager.php(232): Doctrine_Manager->parseDsn('postgre://postg...') #1 /opt/lampp/htdocs/doctrine/application/plugins/doctrine/lib/Doctrine/Manager.php(194): Doctrine_Manager->openConnection('postgre://postg...', 'default') #2 /opt/lampp/htdocs/doctrine/application/plugins/doctrine_pi.php(22): Doctrine_Manager::connection('postgre://postg...', 'default') #3 /opt/lampp/htdocs/doctrine/system/libraries/Loader.php(466): include_once('/opt/lampp/htdo...') #4 /opt/lampp/htdocs/doctrine/system/libraries/Loader.php(968): CI_Loader->plugin(Array) #5 /opt/lampp/htdocs/doctrine/system/libraries/Controller.php(83): CI_Loader->_ci_autoloader() #6 /opt/lampp/htdocs/doctrine/system/libraries/Controller.php(43): Controller->_ci_initialize() #7 /opt/lampp/htdocs/doctrine/ in /opt/lampp/htdocs/doctrine/application/plugins/doctrine/lib/Doctrine/Manager.php on line 439
que puede estar sucediendo?
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com
  #2 (permalink)  
Antiguo 14/01/2011, 20:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: doctrine y codeigniter como manejar las conecciones?

creo que el mensaje de error es bastante claro: Unknown driver postgre

y si estas hablando de Doctrine, quizá, es posible, tal ves.... no lo se, puede que no tengas el driver para postgre?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 15/01/2011, 04:26
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: doctrine y codeigniter como manejar las conecciones?

Postea el dsn o la configuración, igual te comento que el driver es pgsql.

Saludos.
  #4 (permalink)  
Antiguo 16/01/2011, 22:35
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: doctrine y codeigniter como manejar las conecciones?

Disculpen la tardanza.

Intento serciorarme que puedo conectar con postgres y con xampp no entontraba forma así que me monte el servidor con postgres e intento hacer unas pruebas, segun yo si puedo establecer conexion con postgres.

Y un parentesis a este hilo, quiza me puedan ayudar con este script que solo es para probar la conexion.

Código:
<?php

class con{

    function conectar($db="ci_doctrine", $host="localhost",$user="postgres", $port=5432){
		$rpas = 'copia';
		$pass = md5($rpas);
	        $link = pg_connect("host=$host port=$port dbname=$db user=$user password=$pass") or die('error');


    }
}
= new con();
//$h->con2();
$h->conectar();


?>
me sale este error.

Warning: pg_connect(): Unable to connect to PostgreSQL server: FATAL: password authentication failed for user "postgres" in /var/www/hi.php on line 8 error

Y bueno esta es mi primera experiencia con postgres asi que seguro algo estoy haciendo mal.
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com
  #5 (permalink)  
Antiguo 16/01/2011, 23:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: doctrine y codeigniter como manejar las conecciones?

Pues el mensaje de error es muy claro, el password es incorrecto para el usuario postgres, revisa que estés usando el usuario y password correctos.
  #6 (permalink)  
Antiguo 17/01/2011, 08:13
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: doctrine y codeigniter como manejar las conecciones?

umm... que bronca es lo mismo que pense.

El pass para el usuario es copia, y cuando lo puse "copia" sin md5 salia el mismo mensaje, ahora que esta con md5 sale el mensaje igual.

Es el mismo pasword que uso para entrar con el pgadmin3
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com
  #7 (permalink)  
Antiguo 17/01/2011, 08:48
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: doctrine y codeigniter como manejar las conecciones?

El mensaje que te sale ahora no tiene nada que ver con el mensaje del primer post, porque no posteas como te comente antes el dsn o la configuración ?
  #8 (permalink)  
Antiguo 17/01/2011, 11:14
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: doctrine y codeigniter como manejar las conecciones?

si tienes razón se que no tiene nada ver, solo que es en consecuencia de este problema que me arme el servidor web sin xampp y ahora solo quiero confirmar que puedo conectar con postgres y seguir con el tema original, es para descartar dudas.

La configuracion en xampp es:
Cita:
['dbdriver'] The database type. ie: mysql. Currently supported:
mysql, mysqli, postgre, odbc, mssql, sqlite, oci8
| ['dbprefix'] You can add an optional prefix, which will be added
| to the table name when using the Active Record class
| ['pconnect'] TRUE/FALSE - Whether to use a persistent connection
| ['db_debug'] TRUE/FALSE - Whether database errors should be displayed.
| ['cache_on'] TRUE/FALSE - Enables/disables query caching
| ['cachedir'] The path to the folder where cache files should be stored
| ['char_set'] The character set used in communicating with the database
| ['dbcollat'] The character collation used in communicating with the database
|
| The $active_group variable lets you choose which connection group to
| make active. By default there is only one group (the "default" group).
|
| The $active_record variables lets you determine whether or not to load
| the active record class
*/

$active_group = "default";
$active_record = TRUE;

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "postgres";
$db['default']['password'] = "copia";
$db['default']['database'] = "ci_doctrine";
$db['default']['dbdriver'] = "postgre";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";
Como dije antes tengo a doctrine con un plugin.
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com
  #9 (permalink)  
Antiguo 17/01/2011, 12:34
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: doctrine y codeigniter como manejar las conecciones?

Probaste cambiar la config a como te comente antes ?

Código PHP:
Ver original
  1. $db['default']['dbdriver'] = "pgsql";
  #10 (permalink)  
Antiguo 17/01/2011, 16:02
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: doctrine y codeigniter como manejar las conecciones?

Cita:
Iniciado por masterpuppet Ver Mensaje
Probaste cambiar la config a como te comente antes ?

Código PHP:
Ver original
  1. $db['default']['dbdriver'] = "pgsql";
Si lo hize amigo y tras ello, desidi montar mi el servidor desde cero, solo me falta hacer la conexion con postgres.
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com
  #11 (permalink)  
Antiguo 17/01/2011, 18:02
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: doctrine y codeigniter como manejar las conecciones?

Retiro lo dicho, tenias razon era pgsql y por lo menos ya no me muestra el error en toda la aplicación, pero aun tengo problema en el modelo que interactua con una tabla de la base de datos.

Cita:
Fatal error: Uncaught exception 'Doctrine_Connection_Pgsql_Exception' with message 'SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near "user" LINE 1: INSERT INTO user (username, password, first_name, last_name)... ^' in /var/www/doctrine/application/plugins/doctrine/lib/Doctrine/Connection.php:1084 Stack trace: #0 /var/www/doctrine/application/plugins/doctrine/lib/Doctrine/Connection/Statement.php(253): Doctrine_Connection->rethrowException(Object(PDOException), Object(Doctrine_Connection_Statement)) #1 /var/www/doctrine/application/plugins/doctrine/lib/Doctrine/Connection.php(1049): Doctrine_Connection_Statement->execute(Array) #2 /var/www/doctrine/application/plugins/doctrine/lib/Doctrine/Connection.php(693): Doctrine_Connection->exec('INSERT INTO use...', Array) #3 /var/www/doctrine/application/plugins/doctrine/lib/Doctrine/Connection/UnitOfWork.php(595): Doctrine_Connection->insert(Object(Doctrine_Table), Array) #4 /var/www/doctrine/application/plugins/doctrine/lib/Doctrine/Connection in /var/www/doctrine/application/plugins/doctrine/lib/Doctrine/Connection.php on line 1084
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com
  #12 (permalink)  
Antiguo 17/01/2011, 18:17
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: doctrine y codeigniter como manejar las conecciones?

Deberías postear el código relacionado con el error(el Base del modelo y donde haces el save).
  #13 (permalink)  
Antiguo 17/01/2011, 21:16
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: doctrine y codeigniter como manejar las conecciones?

Cita:
Iniciado por masterpuppet Ver Mensaje
Deberías postear el código relacionado con el error(el Base del modelo y donde haces el save).
Es bastante simple:

Este es mi modelo:
Código:
<?php

class User extends Doctrine_Record{

    public function setTableDefinition(){
        $this->hasColumn('username','string',255);
        $this->hasColumn('password','string',255);
        $this->hasColumn('first_name','string',255);
        $this->hasColumn('last_name','string',255);
    }
    
}

?>
y este el controlador:
Código:
class Hello extends Controller{
    function index(){
        echo "hola";
    }

    function user_test(){
        $u = new User();
        $u->username = 'jorge';
        $u->password = 'secret';
        $u->first_name= 'mario';
        $u->last_name = 'loro';
        $u->save();

        $u2 = new User();
        $u2->username = 'Pedro';
        $u2->password = 'norberto';
        $u2->first_name= 'Jorge';
        $u2->last_name = 'baya';
        $u2->save();

        echo "se agregaron dos usuarios";
    }
}
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com
  #14 (permalink)  
Antiguo 18/01/2011, 07:37
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: doctrine y codeigniter como manejar las conecciones?

Seguramente sea un problema del schema, proba hacer esto:

Código PHP:
Ver original
  1. <?php
  2. class User extends Doctrine_Record
  3. {
  4.     public function setTableDefinition()
  5.     {
  6.         $this->setTableName('public.user');
  7.         $this->hasColumn('username', 'string', 255);
  8.         $this->hasColumn('password', 'string', 255);
  9.         $this->hasColumn('first_name', 'string', 255);
  10.         $this->hasColumn('last_name', 'string', 255);
  11.     }
  12. }

suponiendo que el schema es el que crea por defecto postgre, sino deberías cambiarlo por el que corresponda.

Saludos.
  #15 (permalink)  
Antiguo 18/01/2011, 12:38
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: doctrine y codeigniter como manejar las conecciones?

El error es distinto al aplicar la funcion que me recomendo.

Dejo la configuracion del plugin que tengo quiza pueda servir de algo: El archivo se llama doctrine_pi.php y esta a la misma altura que la libreria de doctrine.
Código:
<?php
// load Doctrine library
require_once APPPATH.'/plugins/doctrine/lib/Doctrine.php';

// load database configuration from CodeIgniter
require_once APPPATH.'/config/database.php';

// this will allow Doctrine to load Model classes automatically
spl_autoload_register(array('Doctrine', 'autoload'));

// we load our database connections into Doctrine_Manager
// this loop allows us to use multiple connections later on
foreach ($db as $connection_name => $db_values) {
	
	// first we must convert to dsn format
	$dsn = $db[$connection_name]['dbdriver'] . 
		'://' . $db[$connection_name]['username'] . 
		':' . $db[$connection_name]['password']. 
		'@' . $db[$connection_name]['hostname'] . 
		'/' . $db[$connection_name]['database'];

	Doctrine_Manager::connection($dsn,$connection_name);
}

// CodeIgniter's Model class needs to be loaded
require_once BASEPATH.'/libraries/Model.php';

// telling Doctrine where our models are located
Doctrine::loadModels(APPPATH.'/models');


// (OPTIONAL) CONFIGURATION BELOW

// this will allow us to use "mutators"
Doctrine_Manager::getInstance()->setAttribute(
	Doctrine::ATTR_AUTO_ACCESSOR_OVERRIDE, true);

// this sets all table columns to notnull and unsigned (for ints) by default
Doctrine_Manager::getInstance()->setAttribute(
	Doctrine::ATTR_DEFAULT_COLUMN_OPTIONS,
	array('notnull' => true, 'unsigned' => true));
	
// set the default primary key to be named 'id', integer, 4 bytes
Doctrine_Manager::getInstance()->setAttribute(
	Doctrine::ATTR_DEFAULT_IDENTIFIER_OPTIONS,
	array('name' => 'id', 'type' => 'integer', 'length' => 4));
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com
  #16 (permalink)  
Antiguo 18/01/2011, 12:47
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: doctrine y codeigniter como manejar las conecciones?

Si ta de un error diferente es porque falta algo en la tabla, postgre no es mysql, no se traga todo, tendrías que crear la clave primaria correspondiente, la secuencia, etc..., igual vas a tener que decirle a que scheme pertenece la tabla, pero ya no es un tema de Doctrine sino de la definición de la tabla en postgre.

Te hago una sugerencia, crea el Yml correspondiente al modelo y a través del cli de doctrine crea tanto el modelo como la tabla, ahí seguramente no vas a tener problemas.

Última edición por masterpuppet; 18/01/2011 a las 12:52
  #17 (permalink)  
Antiguo 19/01/2011, 07:43
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: doctrine y codeigniter como manejar las conecciones?

Hola, gracias por ayudarme.

El error que tengo es este:
Código PHP:
Fatal errorUncaught exception 'Doctrine_Connection_Pgsql_Exception' with message 'SQLSTATE[23502]: Not null violation: 7 ERROR: null value in column "id" violates not-null constraint' in /var/www/doctrine/application/plugins/doctrine/lib/Doctrine/Connection.php:1084 Stack trace#0 /var/www/doctrine/application/plugins/doctrine/lib/Doctrine/Connection/Statement.php(253): Doctrine_Connection->rethrowException(Object(PDOException), Object(Doctrine_Connection_Statement)) #1 /var/www/doctrine/application/plugins/doctrine/lib/Doctrine/Connection.php(1049): Doctrine_Connection_Statement->execute(Array) #2 /var/www/doctrine/application/plugins/doctrine/lib/Doctrine/Connection.php(693): Doctrine_Connection->exec('INSERT INTO pub...', Array) #3 /var/www/doctrine/application/plugins/doctrine/lib/Doctrine/Connection/UnitOfWork.php(595): Doctrine_Connection->insert(Object(Doctrine_Table), Array) #4 /var/www/doctrine/application/plugins/doctrine/lib/Doctrine/Connection/UnitOfWork.php(549): Doctrine_Connection_UnitOfWork->processSin in /var/www/doctrine/application/plugins/doctrine/lib/Doctrine/Connection.php on line 1084 
La sugerencia que me dio no se como llevarlo acabo. YML es Yahoo markup lenguaje?? si es asi no lo se usar.
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com
  #18 (permalink)  
Antiguo 19/01/2011, 08:37
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: doctrine y codeigniter como manejar las conecciones?

El error es como te dice el mensaje que el id no puede ser null, deberías agregar el campo id al modelo(suponiendo que es la clave primaria):

Código PHP:
Ver original
  1. <?php
  2. class User extends Doctrine_Record
  3. {
  4.     public function setTableDefinition()
  5.     {
  6.         $this->setTableName('public.user');
  7.         $this->hasColumn('id', 'integer', 11, array('primary' => true));
  8.         $this->hasColumn('username', 'string', 255);
  9.         $this->hasColumn('password', 'string', 255);
  10.         $this->hasColumn('first_name', 'string', 255);
  11.         $this->hasColumn('last_name', 'string', 255);
  12.     }
  13. }

y si no es una secuencia deberías setearlo en el modelo:

Código PHP:
Ver original
  1. $u = new User();
  2. $u->id = 123;
  3. $u->password = 'secret';
  4. $u->first_name= 'mario';
  5. $u->last_name = 'loro';
  6. $u->save();

Te dejo la referencia a YAML, al YAML schema y al Doctrine CLI, este último es el que tenes que configurar para poder trabajar desde la consola, la idea es que generes los Yml y a través de la consola puedas manipular los modelos y la bbdd.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #19 (permalink)  
Antiguo 19/01/2011, 12:03
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: doctrine y codeigniter como manejar las conecciones?

Muchas gracias amigo.

He intentado seguir todo el articulo de http://www.doctrine-project.org/proj...nd-doctrine/en

Para ello hize la preba en una nueva instalacion que llame doctrine2
Este es un resumen de las cosas que hize:

Puse doctrine en System->database->doctrine
Modifica que archivo de application->config->database.php y puse abajo de la linea
Código PHP:
$db['default']['cachedir'] = ""
este porcion de codigo:
Código PHP:
// Create dsn from the info above
$db['default']['dsn'] = $db['default']['dbdriver'] .
                        
'://' $db['default']['username'] .
                        
':' $db['default']['password'].
                        
'@' $db['default']['hostname'] .
                        
'/' $db['default']['database'];

// Require Doctrine.php
require_once(realpath(dirname(__FILE__) . '/../..') . DIRECTORY_SEPARATOR 'database/doctrine/Doctrine.php');

// Set the autoloader
spl_autoload_register(array('Doctrine''autoload'));

// Load the Doctrine connection
Doctrine_Manager::connection($db['default']['dsn'], $db['default']['database']);

// Set the model loading to conservative/lazy loading
Doctrine_Manager::getInstance()->setAttribute(Doctrine_Core::ATTR_MODEL_LOADINGDoctrine_Core::MODEL_LOADING_CONSERVATIVE);

// Load the models for the autoloader
Doctrine_Core::loadModels(realpath(dirname(__FILE__) . '/..') . DIRECTORY_SEPARATOR 'models'); 
Luego me fui a la raiz de todo y agrege al final del archivo, borrando previamente la ultima linea de codigo en index.php y agrege las siguientes lineas de codigo:

Código PHP:
require_once APPPATH.'config/database.php';
require_once 
BASEPATH.'codeigniter/CodeIgniter'.EXT
Segun yo hasta aca lo he hecho todo bien.
Aca biene mi sufrimiento, cuando pide que agrege unas lineas de codigo que segun yo es en /usr/bin y crear un archivo llamado env.php con este contenido.

Código PHP:
#!/usr/bin/env php
define('BASEPATH','.'); // mockup that this app was executed from ci ;)
chdir(dirname(__FILE__));
include(
'doctrine.php'); 
Este paso no lo hize aun.

Seguidamente cree un directorio con permisos 777 llamado doctrine en application->doctrine y cree un archivo doctrine.php con el contenido siguiente:
Código PHP:
require_once('config/database.php');

// Configure Doctrine Cli
// Normally these are arguments to the cli tasks but if they are set here the arguments will be auto-filled
$config = array('data_fixtures_path'  =>  dirname(__FILE__) . DIRECTORY_SEPARATOR '/fixtures',
                
'models_path'         =>  dirname(__FILE__) . DIRECTORY_SEPARATOR '/models',
                
'migrations_path'     =>  dirname(__FILE__) . DIRECTORY_SEPARATOR '/migrations',
                
'sql_path'            =>  dirname(__FILE__) . DIRECTORY_SEPARATOR '/sql',
                
'yaml_schema_path'    =>  dirname(__FILE__) . DIRECTORY_SEPARATOR '/schema');

$cli = new Doctrine_Cli($config);
$cli->run($_SERVER['argv']); 
en ese mismo directorio he creado las siguientes carpetas.
// application->doctrine : schemas migrations fixtures

Ahora siguiendo el articulo me pide que haga esto:

Código:
$ cd system/application
$ ./doctrine
Doctrine Command Line Interface

./doctrine build-all
./doctrine build-all-load
./doctrine build-all-reload
./doctrine compile
./doctrine create-db
./doctrine create-tables
./doctrine dql
./doctrine drop-db
./doctrine dump-data
./doctrine generate-migration
./doctrine generate-migrations-db
./doctrine generate-migrations-models
./doctrine generate-models-db
./doctrine generate-models-yaml
./doctrine generate-sql
./doctrine generate-yaml-db
./doctrine generate-yaml-models
./doctrine load-data
./doctrine migrate
./doctrine rebuild-db
$
Y esto ya no se como se hace

intente hacerlo por la linea de comandos en Debian squeeze, pero bash no lo reconoce :s.

Supongo que es lo ultimo que me falta.

Help!
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com
  #20 (permalink)  
Antiguo 19/01/2011, 12:35
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: doctrine y codeigniter como manejar las conecciones?

Que te dice al ejecutar ./doctrine ? php5-cli esta instalado en el sistema ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #21 (permalink)  
Antiguo 19/01/2011, 13:22
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: doctrine y codeigniter como manejar las conecciones?

Cuando ejecuto ./doctrine dice que el directorio existe. te dejo todas las sentencias que he intentado.
Código:
root@copia:/home/jorge# cd /var/www/doctrine2/application
root@copia:/var/www/doctrine2/application# ./doctrine
bash: ./doctrine: es un directorio
root@copia:/var/www/doctrine2/application# cd doctrine
root@copia:/var/www/doctrine2/application/doctrine# ./doctrine
bash: ./doctrine: No existe el fichero o el directorio
root@copia:/var/www/doctrine2/application/doctrine# ./doctrine buil-all
bash: ./doctrine: No existe el fichero o el directorio
Si tengo instalado el php5-cli.

el arbol de directorios que tengo es así:
/var/www/doctrine2/->
--- application
-------->doctrine
-------------->migrations
-------------->schemas
-------------->fixtures
-------------->doctrine.php
--- system
-------------->database
--------------------->doctrine
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com
  #22 (permalink)  
Antiguo 19/01/2011, 13:33
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: doctrine y codeigniter como manejar las conecciones?

en application/doctrine deberias tener el fichero doctrine con esto dentro

Código Bash:
Ver original
  1. #!/usr/bin/env php
  2. define('BASEPATH','.'); // mockup that this app was executed from ci ;)
  3. chdir(dirname(__FILE__));
  4. include('doctrine.php');

y deberia tener permisos de ejecucion(chmod u+x doctrine)
__________________
http://es.phptherightway.com/
thats us riders :)
  #23 (permalink)  
Antiguo 19/01/2011, 15:19
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: doctrine y codeigniter como manejar las conecciones?

umm... eso lo tengo que poner en un archivo doctrine.php porque si es asi hay ya un archivo doctrine.php con otro contenido.

Yo pense que eso va en /usr/bin/env

o tengo que poner dentro de otro archivo? con extencion .php??
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com
  #24 (permalink)  
Antiguo 19/01/2011, 15:33
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: doctrine y codeigniter como manejar las conecciones?

Nop, el archivo se llama doctrine(sin extension), y como te comente va en application/doctrine, no es mas que un shortcut a php doctrine.php.
__________________
http://es.phptherightway.com/
thats us riders :)
  #25 (permalink)  
Antiguo 19/01/2011, 20:37
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: doctrine y codeigniter como manejar las conecciones?

muchas gracias, siento no tener mayor conocimiento mas intento hacer lo que puedo.

he puesto lo que me dijo en un archivo dentro de la carpeta doctrine.

Ejecute en consola y tengo este resultado:
Código BASH:
Ver original
  1. root@copia:/var/www/doctrine2/application/doctrine# ./doctrine
  2. define('BASEPATH','.'); // mockup that this app was executed from ci ;)
  3. chdir(dirname(__FILE__));
  4. include('doctrine.php');root@copia:/var/www/doctrine2/application/doctrine#
  5. root@copia:/var/www/doctrine2/application/doctrine#

Intente aplicar cada sentencia que se me pide que ingrese por consola pero sale la misma respuesta siempre.

Una pregunta curiosa, con yaml tendre que poner toda mi base de datos con esa estructura de archivo?
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com
  #26 (permalink)  
Antiguo 19/01/2011, 21:39
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: doctrine y codeigniter como manejar las conecciones?

No te esta interpretando el php, en el tutorial de doctrine se comieron el <?php, debería ser asi:

Código BASH:
Ver original
  1. #!/usr/bin/env php
  2. <?php
  3. define('BASEPATH','.'); // mockup that this app was executed from ci ;)
  4. chdir(dirname(__FILE__));
  5. include('doctrine.php');
me auto-corrijo, la ubicación del fichero es en system/application, y con respecto a la pregunta, en el Yml definís los modelos y a partir de la consola generas y editas tanto los modelos como la bbdd, cuando quieras agregar, editar o eliminar un campo lo único que tenes que hacer es editar un simple Yml y después con dos sentencias(generate-yaml-models + build-all)actualizas tus modelos y la bbdd, es mas podes agregar los fixtures(datos de prueba) y con solo hacer build-all-reload te regenera la tabla con datos de prueba, es una pasada la verdad.

Te hago una pregunta, es para un proyecto en concreto o es algo que estas probando ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #27 (permalink)  
Antiguo 20/01/2011, 09:48
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: doctrine y codeigniter como manejar las conecciones?

Cita:
Te hago una pregunta, es para un proyecto en concreto o es algo que estas probando ?
Es para usarlo en un proyecto en concreto, en la universidad estoy haciendo una aplicación donde el requisito es que funcione al menos en 3 motores de bases de datos, y por eso he optado por usar doctrine,

Y estoy muy agradecido del apoyo que me esta brindando.

Ya logre hacer que me funcione en consola, no solo faltaba agregar <?php sino que dentro de config->database.php en la linea 68 que es mi caso tenia que modificar el destino de Doctrine.php y con eso funciona.

Ahora supongo que toca hacer el yaml. usar doctrine
Estoy en la parte que dice que cree users.yml en fixtures., ¿El usuario y pass son los que uso en postgres? ¿Si es para mas de una base de datos todos deben tener el mismo user y pass?
O simplemente es para agregar ese usuario?

hasta aqui tengo todo:

Código BASH:
Ver original
  1. root@copia:/var/www/doctrine2/application# ./doctrine
  2. Doctrine Command Line Interface
  3. ./doctrine generate-migration
  4. ./doctrine build-all
  5. ./doctrine migrate
  6. ./doctrine create-db
  7. ./doctrine rebuild-db
  8. ./doctrine generate-sql
  9. ./doctrine generate-migrations-db
  10. ./doctrine generate-yaml-db
  11. ./doctrine create-tables
  12. ./doctrine generate-models-yaml
  13. ./doctrine compile
  14. ./doctrine generate-migrations-diff
  15. ./doctrine generate-models-db
  16. ./doctrine load-data
  17. ./doctrine dump-data
  18. ./doctrine drop-db
  19. ./doctrine dql
  20. ./doctrine build-all-load
  21. ./doctrine generate-yaml-models
  22. ./doctrine build-all-reload
  23. ./doctrine generate-migrations-models
  24. root@copia:/var/www/doctrine2/application# ./doctrine generate-models-yaml
  25. Unable to parse string: Unable to parse line 6 (primary:true).
  26. root@copia:/var/www/doctrine2/application# ./doctrine generate-models-yaml
  27. generate-models-yaml - Generated models successfully from YAML schema
  28. root@copia:/var/www/doctrine2/application#
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com
  #28 (permalink)  
Antiguo 20/01/2011, 15:02
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: doctrine y codeigniter como manejar las conecciones?

Cita:
Iniciado por Copia Ver Mensaje
Es para usarlo en un proyecto en concreto, en la universidad estoy haciendo una aplicación donde el requisito es que funcione al menos en 3 motores de bases de datos, y por eso he optado por usar doctrine,
Ahhhhh, igual te comento que ya esta la versión 2, que es excelente.

Cita:
Iniciado por Copia Ver Mensaje
Ahora supongo que toca hacer el yaml. usar doctrine
Estoy en la parte que dice que cree users.yml en fixtures., ¿El usuario y pass son los que uso en postgres? ¿Si es para mas de una base de datos todos deben tener el mismo user y pass?
O simplemente es para agregar ese usuario?
los fixtures son "datos de prueba", primero creas en schema el fichero user.yml con todos los datos del user, podes utilizar el ejemplo tal cual esta, asi ya vas viendo como se manejan las relaciones, luego creas en fixtures otro user.yml con varios usuarios, despues por medio de la consola generas los modelos(generate-models-yaml), luego generas la bbdd y cargas los datos de prueba(build-all-reload).

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #29 (permalink)  
Antiguo 20/01/2011, 17:09
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: doctrine y codeigniter como manejar las conecciones?

Cita:
Iniciado por masterpuppet Ver Mensaje
Ahhhhh, igual te comento que ya esta la versión 2, que es excelente.
Lo se e intente aplicarlo, pero la estructura es distinta a la de 1.2.3 y en los ejemplos que estoy siguiendo pues usan esa versión, es usted me paso el articulo que estoy siguiendo hasta ahora y era de esa versión.

Cita:
Iniciado por masterpuppet Ver Mensaje
los fixtures son "datos de prueba", primero creas en schema el fichero user.yml con todos los datos del user, podes utilizar el ejemplo tal cual esta, asi ya vas viendo como se manejan las relaciones, luego creas en fixtures otro user.yml con varios usuarios, despues por medio de la consola generas los modelos(generate-models-yaml), luego generas la bbdd y cargas los datos de prueba(build-all-reload).
Saludos.
Cuando dice generar la bbdd a que se refiere exactamente.
¿Es como que tengo en .yml toda la estructura de una base de datos? y luego se genera la base automaticamente?
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com
  #30 (permalink)  
Antiguo 20/01/2011, 17:27
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: doctrine y codeigniter como manejar las conecciones?

Cuando digo generar me refiero a crear la bbdd, cada vez que ejecutas build-all-*, tira abajo la bbdd y la genera de nuevo, por eso son importantes los fixtures, para no tener que insertar de nuevo los datos con cada cambio en los modelos.

Lo que tenes en el Yml es una representacion de tus modelos, doctrine luego en base a la definición de estos modelos genera(crea) la bbdd, la idea es que los cambios los realices en un solo lugar y que luego por medio de la consola se vea reflejado tanto en los modelos como en la bbdd.

Hace pruebas y vas a ver a que me refiero.
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: doctrine, manejar
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 21:03.