Как и предполагалось, создание массива пар ключ / значение должно работать, если ключи соответствуют полям таблицы в обеих моделях. Что-то вроде:
$data = [];
foreach($partialProduct->attributes as $key => $value):
$data[$key] = $value;
endforeach;
$product = Yii::$app->db->createCommand()
->insert('products', $data)
->execute();
В качестве альтернативы, вы можете использовать массовое задание. Опять же, для того, чтобы это работало, поля в обеих моделях должны совпадать:
$product = new Product;
$product->attributes = $partialProduct->attributes;
$product->save();
Если вы хотите сохранить только некоторые поля из ваших частичных Продуктов в свой Продукт, вы можете использовать scenar ios для выбора указанных c полей, которые вы хотите установить с массовым присваиванием :
В продукте. php
const SCENARIO_TEST = 'test';
...
public function scenarios()
{
return [
self::SCENARIO_TEST => ['field_1', 'field_2'], // Any field not listed here will not be set
];
}
И где угодно вы делаете сохранение:
$product = new Product;
$product->scenario = Product::SCENARIO_TEST;
$product->attributes = $partialProduct->attributes;
$product->save();