Поддержка нескольких баз данных в Symfony - PullRequest
3 голосов
/ 09 апреля 2009

Я использую Propel в качестве моего DAL для моего проекта Symfony. Кажется, я не могу заставить свое приложение работать в двух или более базах данных.

Вот мой schema.yml:

db1:
  lkp_User:
    pk_User:                     { type: integer, required: true, primaryKey: true, autoIncrement: true }
    UserName:                    { type: varchar(45), required: true }
    Password:                    longvarchar
    _uniques:
      Unique:                    [ UserName ]

db2:
  tesco:
    Id:                  { type: integer, required: true, primaryKey: true, autoIncrement: true }
    Name:                { type: varchar(45), required: true }
    Description:         longvarchar

А вот и базы данных.yml:

dev:
  db1:
    param:
      classname: DebugPDO
test:
  db1:
    param:
      classname: DebugPDO
all:
  db1:
    class: sfPropelDatabase
    param:
      classname: PropelPDO
      dsn: 'mysql:dbname=bpodb;host=localhost'   #where the db is located
      username: root
      password: #pass
      encoding: utf8
      persistent: true
      pooling: true


  db2:
    class: sfPropelDatabase
    param:
      classname: PropelPDO
      dsn: 'mysql:dbname=mystore2;host=localhost'   #where the db is located
      username: root
      password: #pass
      encoding: utf8
      persistent: true
      pooling: true

Когда я звоню php symfony propel-build-model, генерируется только db1, db2 - нет.

Есть идеи, как решить эту проблему?

Ответы [ 3 ]

6 голосов
/ 09 апреля 2009

У меня проблема работает ! Самое главное, вы должны назвать свою схему в соответствии с% dbname% .schema.yml. Таким образом, Symfony сможет назначить ymls для правильной базы данных.

1 голос
/ 08 мая 2009

Вы также можете использовать Propel::getConnection('db2') для ручного получения соединения.

Просто помните, что то, что вы называете "db1", "db2" - это имена соединений . Вы можете иметь несколько подключений к одной и той же базе данных с различными логинами / разрешениями (например, только чтение и т. Д.).

Это очень хорошо для целей тестирования: вы можете сделать это с тем же именем соединения с другой базой данных. С этим нельзя рушить вашу производственную базу данных:)

1 голос
/ 20 апреля 2009

Также при запуске задачи вы должны указать соединение, например:

symfony propel:build-all-load --connection=my_connection

Это сработало для меня, надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...