Запретить patchEntity () от удаления дубликатов - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь сохранить объект, связанный с BelongsToMany, т.е. заказать продукты BelongsToMany.Моя объединенная таблица содержит важные данные, которые мне нужно сохранить, даже если идентификаторы продуктов дублированы.Унифицированный ключ не был создан в объединенной таблице.Но patchEntity мешает мне сделать это, потому что он удаляет дублированные продукты.

OrdersTable.php

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

        $this->belongsToMany('Products', [
            'foreignKey' => 'order_id',
            'targetForeignKey' => 'product_id',
            'joinTable' => 'orders_products',
            'through' => 'OrdersProducts'
        ]);
    }
}

Это мой POST, где вы можете видеть, что продукт с идентификатором 1772 вставляется более одного раза.

'products' => [
    (int) 0 => [
        '_joinData' => [
            'id' => '50',
            'order_id' => '',
            'product_name' => '- name -',
            'exception_id' => '',
            'exception_name' => '',
            'weft' => '100',
            'warp' => '100',
            'manufacture_name' => 'AC',
            'real_cost' => '1.2',
            'ordered_quantity' => '32',
            'received_quantity' => '2',
            'difference' => '30'
        ],
        'id' => '1772'
    ],
    (int) 1 => [
        '_joinData' => [
            'id' => '',
            'order_id' => '',
            'exception_id' => '1',
            'weft' => '100',
            'warp' => '100',
            'manufacture_name' => 'AC',
            'real_cost' => '1.2',
            'ordered_quantity' => '111',
            'received_quantity' => '1',
            'difference' => '0'
        ],
        'id' => '1772'
    ]
]

После исправления сущности я получаю это (я удалил ненужные или конфиденциальные данные)

'products' => [
    (int) 0 => object(App\Model\Entity\Product) {

        'id' => (int) 1772,
        '_joinData' => object(App\Model\Entity\OrdersProduct) {
            'id' => (int) 50,
            'exception_id' => null,
            'manufacture_id' => null,
            'order_id' => null,
            'product_id' => (int) 1772,
            'sorting' => (int) 1,
            'price' => null,
            'real_cost' => (float) 1.2,
            'ordered_quantity' => (int) 32,
            'received_quantity' => (int) 2,
            'weft' => (float) 100,
            'warp' => (float) 100,
            'weft_with_shrinkage' => null,
            'warp_with_shrinkage' => null,
            'weft_with_shrinkage_fold' => null,
            'warp_with_shrinkage_fold' => null,
            '[new]' => false,
        },
    }
],

Это не хорошо для меня.Мой клиент хочет добавлять один и тот же продукт много раз.

Есть ли способ предотвратить удаление дубликатов patchEntity ()?

...