cakephp 3.x Asociación de ahorro anidada (profunda)

Tengo datos del producto provenientes de una llamada de servicio de un tercero a partir de los cuales creo un objeto y lo guardo en mi base de datos MySQL. Mis modelos son los siguientes:

'productos' hasMany >> 'product_skus' hasMany >> 'product_sku_attributes'

relaciones de mesa

En mi método ProductsTable.php initialize () tengo:

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

En mi método ProductSkusTable.php initialize () tengo:

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

Mi controlador:

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

Aquí está el fragmento relevante de la depuración de mi entidad:

'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) { ...

Doblé la casilla y todos mis campos están configurados como accesibles en mis clases de entidad de tabla. Además, en este punto solo estoy tratando de guardar un registro de producto por simplicidad, por lo tanto, $ products-> newEntity ().

Mis datos se guardan en las tablas 'productos' y 'product_skus' sin problema, pero no en 'product_sku_products'. ¿Alguien puede ver cuál es el problema? ¿Es porque no estoy usando la misma ForeignKey?

Por favor, hágame saber qué más puedo proporcionar para mayor claridad.

Respuestas a la pregunta(1)

Su respuesta a la pregunta