2014-05-11 6 views
5

Moja baza danych to postgreSQL. Ja ustawię parametry jak poniżej:Jak zapytać o tabelę w schemacie w symfony2 przez doktrynę?

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 

Problem polega na tym, że nie wiem, jak kwerendy istniejących tabel w PostgreSQL. Nie mam problemu z MySQL, ale w PostgreSQL właściwie nie wiem co robić.

EDIT:

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

I wtedy tworzyć podmioty pracować z moimi danymi.

EDIT2:


Stoliki są już utworzone w PostgreSQL. Połączenie zostało wykonane. Zrobiłem to z powodzeniem. Teraz chcę utworzyć jednostki na podstawie istniejących tabel. Myślę, że teraz jest o wiele jaśniej i nikt nie jest po ciemnej stronie. ;-)

+0

Czy możesz pokazać nam przykład jak to zrobić z MySQL? – Luke

+1

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

+0

W swojej edycji , dlaczego 'database_driver' jest ustawiony jako' pdo_mysql'? Czy powinien to być 'pdo_pgsql'? – kix

Odpowiedz

1

Ustawienia dla PostgreSQL i MySQL są bardzo podobne. Musisz dokonać zmiany poza plikami php Symfony2, aby móc używać PostgreSQL z PHP. W pliku php.ini upewnij się, że włączasz rozszerzenie dla pgsql. To musi być włączony, dzięki czemu można korzystać z database_driver pdo_pgsql

plik php.ini /etc/php5/apache2/php.ini dodać:

extension=pdo.so 
extension=php_pdo_pgsql.so 

Po tym, test, który można połączyć się istniejąca baza danych lub utwórz nową bazę danych. użyj schematu, aby utworzyć lub zatwierdzić w zależności od sytuacji i opublikować wszelkie otrzymane błędy.

+0

Mogę połączyć się z Postgres, problem polega na tym, że mam już istniejące tabele i nie mam dla nich żadnego bytu. Nie wiem jak zapytać o te tabele – ALH

+0

Ok, więc masz tabele w postgresql, ale żadnych podmiotów związanych z tymi tabelami w projekcie symfonicznym? Będziesz potrzebował podmiotów i możesz użyć doktryny, aby pomóc inżynierowi wstecznemu w tworzeniu podmiotów, ale to nie tworzy idealnie tych podmiotów. spróbuj: $ php doctrine orm: convert-mapping - z-bazy danych yml/path/to/mapping-path-convert-to-yml jak określono w [doctrine docs] (http://docs.doctrine-project.org /en/2.0.x/reference/tools.html # reverse-engineering) – George

+0

w symfony, która byłaby 'php app/console doctrine: orm: convert-mapping' –

1

Napisałem kilka aplikacji symfony używając postgres chociaż z doktryną dbal, a nie z orm. Moja parameters.yml jest zazwyczaj coś takiego:

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

Skoro powiedział, że można połączyć się z bazą danych, tworzenie podmiotów na stołach jak tym na przykład:

<?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; 
} 

zwrócić uwagę na adnotacje na nazwie tabeli. Określ zarówno schemat, jak i tabelę. Po tym, spróbuj zapytać wszystkie rekordy w tej tabeli za pomocą dql.

+0

Dzięki za odpowiedź. Czy możesz spojrzeć na część EDIT2 w pytaniu/podziękowaniach. – ALH