Можно сделать отдельный экшн контроллера с примерно следующим:
<?php
$dbTransaction = $Yii::app()->db->getCurrentTransaction();
if (!$dbTransaction) {
$dbTransaction = Yii::app()->db->beginTransaction();
}
$productModel = new Product;
$productModel->attributes = $prodAttrs;
if (!$productModel->save()) {
$dbTransaction->rollback();
throw new CException("some");
}
foreach ($productModes as $productModeAttrs) {
$productModeModel = new productMode;
$productModeModel->attributes = $productModeAttrs;
$productModeModel->product_id = $productModel->id;
if (!$productModeModel->save()) {
$dbTransaction->rollback();
throw new CException("some");
}
}
// похожее с фото товаров
$dbTransaction->commit();
// redirect/render/return метода контроллера