вариант, или, может быть, даже таблицы или ассоциации не настроены должным образом.

я есть данные о продукте, поступающие от стороннего сервисного вызова, из которого я затем создаю объект и сохраняю его в моей базе данных MySQL. Мои модели следующие:

hasMany 'products' hasMany >> hasMany product_skus >> product_sku_attributes

табличные отношения

В моем методе Initialize () ProductsTable.php у меня есть:

$this->hasMany('ProductSkus', [
    'foreignKey' => 'product_no',
    'dependent' => true,
]);

В моем методе инициализации ProductSkusTable.php () у меня есть:

$this->hasMany('ProductSkuAttributes', [
    'foreignKey' => 'product_sku_id',
    'bindingKey' => 'id',
    'propertyName' => 'product_sku_attributes',
    'dependent' => true,
]);

Мой контроллер:

$products = TableRegistry::get('Products');
$entity = $products->newEntity($product_data[0]);
$products->save($entity, [
    'associated' => [
        'ProductSkus',
        'ProductSkus.ProductSkuAttributes',
    ]
]);

Вот соответствующий фрагмент из моей отладки сущности:

'product_skus' => [
    (int) 0 => object(App\Model\Entity\ProductSkus) {

        'sku' => 'BDS1401H',
        'sku_price' => (float) 366.76,
        'sku_weight' => (float) 38.1,
        'sku_img_main' => '',
        'sku_img_large' => '',
        'sku_img_default' => false,
        'is_default' => true,
        'product_sku_attributes' => [
            (int) 0 => [
                'product_no' => (int) 23200,
                'sku' => 'BDS1401H',
                'attribute_name' => 'Front Sway Bar Links',
                'option_name' => 'Stock'
            ],
            (int) 1 => [
                'product_no' => (int) 23200,
                'sku' => 'BDS1401H',
                'attribute_name' => 'Shock Options',
                'option_name' => 'NX2 Series'
            ],
            (int) 2 => [
                'product_no' => (int) 23200,
                'sku' => 'BDS1401H',
                'attribute_name' => 'Steering Stabilizer Options',
                'option_name' => 'Stock'
            ]
        ],
        '[new]' => true,
        '[accessible]' => [
            '*' => true,
            'id' => true
        ],
        '[dirty]' => [
            'sku' => true,
            'sku_price' => true,
            'sku_weight' => true,
            'sku_img_main' => true,
            'sku_img_large' => true,
            'sku_img_default' => true,
            'is_default' => true,
            'product_sku_attributes' => true
        ],
        '[original]' => [],
        '[virtual]' => [],
        '[errors]' => [],
        '[invalid]' => [],
        '[repository]' => 'ProductSkus'

    },
    (int) 1 => object(App\Model\Entity\ProductSkus) { ...

Я дважды проверил, и все мои поля установлены как доступные в моих классах сущностей таблицы. Кроме того, на данный момент я пытаюсь сохранить только одну запись продукта для простоты, следовательно, $ products-> newEntity ().

Мои данные без проблем сохраняются в таблицах 'products' и 'product_skus', но не в 'product_sku_products'. Кто-нибудь может увидеть в чем проблема? Это потому, что я не использую тот же ForeignKey?

Пожалуйста, дайте мне знать, что еще я могу предоставить для ясности.

Ответы на вопрос(1)

Ваш ответ на вопрос