Сейчас для оформления заказа достаточно ввести персональные данные (фио, телефон, адрес). После ввода данные и данные сессии (количество товаров и цена) сохраняются в бд вот так:
CartController
Код: Выделить всё
public function actionIndex()
{
$session = Yii::$app->session;
$session->open();
$this->setMeta('Корзина');
$order = new Order();
if ($order->load(Yii::$app->request->post())) {
$order->qty = $session['cart.qty'];
$order->sum = $session['cart.sum'];
if ($order->save()) {
$order->saveOrderDetails($session['cart'], $order->id);
Yii::$app->session->setFlash('success', 'Ваш заказ принят');
$session->remove('cart');
$session->remove('cart.qty');
$session->remove('cart.sum');
return $this->refresh();
} else {
Yii::$app->session->setFlash('error', 'Ошибка');
}
}
return $this->render('index', compact('session', 'order'));
}
Код: Выделить всё
public function saveOrderDetails($items, $order_id)
{
foreach ($items as $id => $item) {
$order_details = new OrderDetails();
$order_details->order_id = $order_id;
$order_details->product_id = $id;
$order_details->name = $item['name'];
$order_details->price = $item['price'];
$order_details->qty_item = $item['qty'];
$order_details->sum_item = $item['qty'] * $item['price'];
$order_details->save();
}
}
У меня есть таблице user_address которая связана по id с таблицей user.