У меня есть приложение в CakePHP 3.5.13, которое использует четыре разные базы данных.
В моем config/app.php
я настроил два из них следующим образом:
'Datasources' => [
'default' => [ 'database' => 'sdb5_hub_subdb', ... ],
'db_orgs' => [ 'database' => 'dev_hub_subdb_orgs', ... ]
];
Так что это означаетЕсть 2 базы данных с именами sdb5_hub_subdb
и dev_hub_subdb_orgs
.
Я пытаюсь выполнить запрос, который объединяет таблицу в каждой базе данных.
У меня есть Table
сущности, настроенные следующим образом:
// src/Model/Table/TblListsSubstancesCommentsTable.php
public function initialize(array $config)
{
$this->belongsTo('Substances', [
'foreignKey' => 'substance_id',
'joinType' => 'INNER'
]);
}
public static function defaultConnectionName()
{
return 'db_orgs';
}
// src/Model/Table/SubstancesTable.php
public function initialize(array $config)
{
$this->belongsTo('TblListsSubstancesComments', [
'foreignKey' => 'substance_id'
]);
}
Когда я пытаюсь сделать следующее с ORM:
$query = $Substances->find()->select(['id' => 'Substances.id'])->distinct();
if ($this->request->getData('org_information')) {
$org_information = $this->request->getData('org_information');
$query = $query->matching('TblListsSubstancesComments', function ($q) use ($org_information) {
return $q->where(['TblListsSubstancesComments.comment LIKE' => '%'.$org_information.'%' ]);
});
}
Выдает ошибку SQL:
SQLSTATE [42S02]: базовая таблица или представление не найдены: 1146 таблица'sdb5_hub_subdb.tbl_lists_substances_comments' не существует
Я не понимаю этого, потому что таблица определенно существует.Кроме того, мой TblListsSubstancesCommentsTable.php
содержит defaultConnectionName()
, чтобы указать, что он должен использовать соединение db_orgs
.Итак, я предполагаю, что он должен знать, чтобы перейти на вторую базу данных, чтобы загрузить эту таблицу?Это похоже на то, что он смотрит в базу данных по умолчанию и не находит ее, но я не знаю почему, потому что сущность Table сообщает ей, где она должна искать.