Сохранение данных в нескольких таблицах базы данных с одной моделью cakephp 3 - PullRequest
0 голосов
/ 10 января 2019

У меня есть две базы данных с одной и той же таблицей.

db1.wafer_types Таблица: -

ID    waferType   name
1071  req_1       req_1_name
1072  req_2       req_2_name
1073  req_3       req_3_name

db2.wafer_types Таблица: -

ID   wafer_type_id    waferType   name
1    1071  req_1       req_1_name
2    1072  req_2       req_2_name
3    1073  req_3       req_3_name

Модель (WaferTypesTable)

class WaferTypesTable extends Table {    
    public function initialize(array $config) {
        parent::initialize($config);

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

Entity (WaferType)

class WaferType extends Entity
{
    protected $_accessible = [
         '*' => true,
        'id' => false
    ];
}

Функция контроллера: -

public function waferTypeHistory($id,$userid){        
    $waferType = $this->WaferTypes->find()->where(['id'=>$id])->hydrate(false)->toArray();          
    $connection = ConnectionManager::get('default_history');
    $this->WaferTypes->setConnection($connection);
    $waferTypeHistory = $this->WaferTypes->newEntity();        
    $waferTypeHistory = $this->WaferTypes->patchEntity($waferTypeHistory, $waferType[0]);
    $waferTypeHistory->wafer_type_id = $id;
    $this->WaferTypes->save($waferTypeHistory);
    return true;
}

данные успешно вставлены в таблицу db2.wafer_types. но wafer_type_id подал, получая значение '0'. Я присваиваю ему значение, но оно всегда получает значение «0». Любая идея, почему он получает значение «0» каждый раз.

1 Ответ

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

Возможно, проблема в кешированной схеме, db1.wafer_types не имеет столбца wafer_type_id, поэтому ORM не будет включать его в процесс сохранения.

Вы можете проверить это, сбросив схему после изменения соединения, например:

$this->WaferTypes->setSchema(null);

Я бы предложил вместо этого использовать отдельную (расширенную) модель, которую вы можете настроить для использования соединения db2 по умолчанию. Постоянно возиться с соединениями и схемами кажется довольно нестабильным решением.

Смотри также

...