CakePHP - сбой сохранения HABTM - PullRequest
0 голосов
/ 30 октября 2019

У меня есть таблицы, которые выглядят так. По сути, WarehousePlace может иметь много ItemType, а ItemType может использоваться многими WarehousePlace. Но когда я пытаюсь сохранить, я получаю ошибку базы данных:

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'WarehousePlacesItemType.item_type_id' in 'field list'

SQL Query: SELECT `WarehousePlacesItemType`.`item_type_id` FROM `modules`.`warehouse_places_item_types` AS `WarehousePlacesItemType` WHERE `WarehousePlacesItemType`.`warehouse_place_id` = '22' 

Но все делается соглашениями, а также отлаживаемые данные, как и должно быть, и я не вижу, что не так.

WarehousesController

public function add() {
        $this->load();
        if ($this->request->is('post')) {
            $data = array(
                'WarehousePlace' => array(
                    'name' => $this->request->data['WarehousePlace']['name'],
                ),
                'ItemType' => array(
                    'ItemType' => $this->request->data['ItemType']['ItemType']
                )
            );
            $this->WarehousePlace->create();

            if ($this->WarehousePlace->saveAll($data, array('validate' => 'first', 'deep' => true))) {
//success
            }
            if ($this->WarehousePlace->validationErrors) {
                //validation
            } else {
                //error
            }
        }
    }

таблицы:

warehouse_places_item_types(warehouse_places_id,item_types_id) -> no primary key since CakePHP 2,

warehouse_places(id, name),

item_types(id, name)

Модели:

ItemType

public $hasAndBelongsToMany = array(
    'WarehousePlace' => array(
        'className' => 'WarehousePlace',
        'joinTable' => 'warehouse_places_item_types',
        'foreignKey' => 'item_type_id',
        'associationForeignKey' => 'warehouse_place_id',
        'unique' => 'keepExisting',
    )
);

WarehousePlace

public $hasAndBelongsToMany = array(
    'ItemType' => array(
        'className' => 'ItemType',
        'joinTable' => 'warehouse_places_item_types',
        'foreignKey' => 'warehouse_place_id',
        'associationForeignKey' => 'item_type_id',
        'unique' => 'keepExisting',
    )
);
...