2014-05-11 11 views
5

Il mio database è postgreSQL. Ho impostato i miei parametri come di seguito:Come interrogare una tabella in uno schema in symfony2 tramite doctrine?

parameters: 
    database_driver: pdo_pgsql 
    database_host: 127.0.0.1 
    database_port: null 
    database_name: sandbox 
    database_user: postgres 
    database_password: postgres 
    mailer_transport: smtp 
    mailer_host: 127.0.0.1 
    mailer_user: null 
    mailer_password: null 
    locale: en 
    secret: ThisTokenIsNotSoSecretChangeIt 

Il problema è che non so come interrogare le tabelle esistenti in PostgreSQL. Non ho alcun problema con MySQL, ma in PostgreSQL non so davvero cosa fare.

EDIT:

# app/config/parameters.yml 
parameters: 
database_driver: pdo_mysql 
database_host: localhost 
database_name: test_project 
database_user: root 
database_password: password 

E poi ho creare entità di lavorare con i miei dati.

EDIT2:


Le tabelle sono già stati creati in PostgreSQL. La parte di connessione è terminata. L'ho fatto con successo. Quello che voglio fare ora è creare entità basate su tabelle esistenti. Penso che ora sia molto più chiaro e nessuno è dal lato oscuro. ;-)

+0

Puoi mostrarci un esempio di come lo fai con MySQL? – Luke

+1

http://stackoverflow.com/questions/15280032/how-do-i-specify-which-schema-to-use-for-doctrine-2-2-symfony-2-2-and-postgres –

+0

Nella tua modifica , perché 'database_driver' è impostato come' pdo_mysql'? Dovrebbe essere 'pdo_pgsql'? – kix

risposta

1

Le impostazioni di Postgresql e MySQL sono molto simili. Per poter utilizzare Postgresql con PHP è necessario apportare modifiche al di fuori dei file php di Symfony2. Nel file php.ini, assicurati di abilitare l'estensione per pgsql. Questo deve essere abilitato in modo da poter utilizzare il database_driver pdo_pgsql

file di /etc/php5/apache2/php.ini php.ini, aggiungere:

extension=pdo.so 
extension=php_pdo_pgsql.so 

Dopo questa, test che è possibile connettersi a il tuo database esistente o creare un nuovo database. usa lo schema crea o convalida in base alla tua situazione e pubblica gli errori che ricevi.

+0

Posso connettermi a Postgres, il problema è che ho già tabelle esistenti e non ho alcuna entità per loro. Non so come interrogare queste tabelle – ALH

+0

Ok, quindi hai le tabelle in postgresql, ma nessuna entità relativa a queste tabelle nel tuo progetto symphony? Avrai bisogno di entità e puoi usare la dottrina per aiutare il reverse engineer a creare le entità, ma questo non crea le entità perfettamente. prova: $ php doctrine orm: convert-mapping --from-database yml/path/to/mapping-path-converted-to-yml come specificato in [doctrine docs] (http://docs.doctrine-project.org /en/2.0.x/reference/tools.html # reverse-engineering) – George

+0

in symfony che sarebbe 'php app/console doctrine: orm: convert-mapping' –

1

Ho scritto un paio di applicazioni symfony usando postgres anche se con doctrine dbal e non con l'orm. Il mio parameters.yml è di solito qualcosa di simile:

database_driver: pdo_pgsql 
database_host: localhost 
database_port: 5432 
database_name: my_db_name 
database_user: my_user 
database_password: my_password 

Dal momento che lei ha detto è possibile connettersi al database, creare le entità per i tavoli come questo ad esempio:

<?php 
/* 
*@Entity 
*@Table(name="my_schema_name.my_table_name") 
*/ 
class Message 
{ 
    /** @Column(type="integer") */ 
    private $id; 
    /** @Column(length=140) */ 
    private $text; 
    /** @Column(type="datetime", name="posted_at") */ 
    private $postedAt; 
} 

Attenzione alla annotazioni sul nome della tabella. Specificare sia lo schema che la tabella. Successivamente, prova a interrogare tutti i record in quella tabella usando dql.

+0

Grazie per la risposta. Puoi guardare la parte EDIT2 nella domanda/grazie. – ALH

Problemi correlati