Связать таблицы из другой базы данных CakePHP 3.0 - PullRequest
0 голосов
/ 16 января 2019

У меня есть две базы данных с именем default и default_history. И таблицы с именами пользователей и wafer_detail_history в базе данных по умолчанию и order_history в базе данных default_history. хотите связать таблицу Users с таблицей OrderHistory.

OrderHistoryTable: -

public function initialize(array $config)
{
    parent::initialize($config);

    $this->setTable('order_history');
    $this->setDisplayField('id');
    $this->setPrimaryKey('id');

    $this->addBehavior('Timestamp');

    $this->hasMany('WaferDetailHistory', [
        'foreignKey' => 'order_id'
    ]);

    $this->belongsTo('Users', [
        'foreignKey' => 'created_by',
        'joinType' => 'INNER'
    ]);

}

Я использовал это.

$connection = ConnectionManager::get('default_history');
$this->OrderHistory = TableRegistry::get('OrderHistory');
$this->OrderHistory->setConnection($connection);
$id = 37;
$order_history = $this->OrderHistory->get($id, ['contain' => ['Users']]);

но не в состоянии преуспеть. получить эту ошибку:

Базовая таблица или представление не найдено: 1146 Таблица 'default_history.users' не существует

Ответы [ 2 ]

0 голосов
/ 16 января 2019

У меня была такая же проблема несколько дней назад,

В вашем BelongTo должна быть «стратегия» => «выбрать», чтобы присоединиться к другой базе данных

 $this->belongsTo('Users', [
        'strategy' => 'select'
        'foreignKey' => 'created_by',
        'joinType' => 'INNER'
    ]);
0 голосов
/ 16 января 2019

Попробуйте это сделать в файле OrderHistoryTable.php:

$this->setTable('default_history.order_history');
...