@ Дзиамид наполовину прав.
Технически нельзя объединить две таблицы в отдельную базу данных. Но вы можете притворяться, что это будет любое реальное вмешательство.
Настройка нескольких подключений к базе данных:
//databases.yml
all:
items_db:
class: sfDoctrineDatabase
param:
dsn: mysql://login:passwd@localhost/items
stores_db:
class: sfDoctrineDatabase
param:
dsn: mysql://login:passwd@localhost/stores
Определите правильное соединение для каждой модели
//schema.yml
Item:
connection: items_db
columns:
store_id: integer(4)
relations:
Store:
local: store_id
foreign: id
foreignAlias: Items
Store:
connection: stores_db
columns:
name: string(255)
Теперь вы можете использовать свои модели Doctrine, как обычно:
// like this
$item = new Item();
$store = new Store();
$store->save();
$item->setStore($store);
// or like this
$item->getStore();
Единственным ограничением является то, что вы НЕ МОЖЕТЕ выполнять объединения в DQL-запросах.
$query = Doctrine_Query::create()
->from('Store s')
->leftJoin('s.Items i')
->fetchAll();
Но вы можете загрузить отношения, используя Doctrine_Collections.
$stores = Doctrine::getTable('Store')->findAll(); // this returns a Doctrine_Collection
$stores->loadRelated('Items');
Это работает так же, как Doctrine_Query.