CakePHP 3 говорит, что таблица не существует в другой базе данных при использовании запроса ORM - PullRequest
0 голосов
/ 29 мая 2018

У меня есть приложение в 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 сообщает ей, где она должна искать.

...