На самом деле у меня есть 2 базы данных, одна из которых называется clientDefaultDb
и client1Db
. Вот код ассоциации.
ProductsController
$connection = ConnectionManager::get('client1Db');
$productSource = TableRegistry::get('Products', ['connection' =>
$connection]);
$products = $productSource->find('all');
$products->contain(['ProductUnits']);
Здесь мы устанавливаем соединение таблицы на Client1Db
, и я вызываю contain
с ProductUnits
ProductTable.php
public function initialize(array $config)
{
parent::initialize($config);
$this->setTable('products');
$this->setDisplayField('name');
$this->setPrimaryKey('id');
$this->addBehavior('Timestamp');
$this->hasMany('ProductUnits')
->setForeignKey([
'item_code'
])
->setBindingKey([
'item_code'
]);
}
В возвращении нет ошибок. Он правильно выбрал продукт и имеет некоторые данные, но проблема в том, что в ProductUnits нет данных, он пуст.
Я пытался вручную запросить напрямую к базе данных, что-то вернуть. Попытался скопировать данные ProductUnits
в Client1Db
, затем вставить их в clientDefaultDb
, затем я снова попытался запустить код, и ProductUnits
вернул данные, которые я скопировал. так что, вероятно, все связанные таблицы по-разному связаны с базой данных по умолчанию. Итак, как я могу изменить подключение по умолчанию для связанных таблиц?