Сохранение связанных данных many-to-many. saveRelationBehaviors

Есть 3 таблицы

  1. Order {id: primary key, address: string}
  2. Product {id: primary key, price: integer}
  3. ProductOrder {product_id: primary key, order_id: primary key, product_count: integer}

Для сохранения зависимостей использую расширение saveRelationBehaviors

На входе при создании нового заказа получаю массив наподобие такого:

    'Order' => [
        'address' => [
            'title' => 'Улан-Удэ, улица Павлова, 22'
            'latitude' => '51.80612'
            'longitude' => '107.61796'
        ]
        'productOrders' => [
            0 => [
                'product_id' => '1'
                'product_count' => '10'
            ]
        ]

Настройка отношений

'saveRelation' => [
  'class' => SaveRelationsBehavior::class,
  'relations' => [
    'productOrders',
  ]
],

Вопрос 1: При таком сохранении у меня вылетает ошибка "Отсутствует параметр Order ID". В принципе согласен, в массиве он явно не указан, но вреде как расширение должно само вставлять этот параметр?

Вопрос 2: Правильно ли я вообще использую это расширение? Или правильней было бы использовать отношение products через таблицу ProductOrders. В этом случае как правильно написать конфиг поведения, чтобы подхватывался параметр product_count из массива POST?

**Примечание:

  1. В rules нужные атрибуты выставлены в safe
  2. При обновлении все нормально срабатывает

Сколняюсь больше ко второму варианту, но чем черт не шутит, пока админ спит...


Ответы (0 шт):