次orders_id
をOrders
データベースのテーブルに自動挿入する必要があります。orders_id
は主キーではなく、自動インクリメントしません
データベースにクエリを実行し、最後の (最高の) ID 値を見つけて 1 を増やし、それをデータベースの Orders テーブルに挿入する必要があります。実際、注文の配送先住所を提供する配送アクションがあります。したがって、ユーザーがアドレスフォームに入力して支払いページに移動するとすぐに、Orders
テーブルに同時に入力したいと考えていますmax(orders_id)+1
。
Address
テーブルとOrders
テーブルの間に関係を構築しましたが、テーブルに値がorders
入力されません。Yii のコントローラーに実装するための正しいコードを詳しく教えてください。
配送アクションのコントローラーは次のようになります。
public function actionCheckout_shipping()
{
$address_id = Yii::app()->session->get('address_id');
if(!empty($address_id))
$address = Address::model()->findByPk($address_id);
else
$address = new Address;
$orders=new Orders;
$orders_id = Yii::app()->db->createCommand("SELECT MAX('orders_id') FROM orders_temp")->queryScalar();
$orders->orders_id=$orders_id+1;
$orders->customer_id = 1;
$orders->billing_address_id = Address::model()->address_id;
$orders->shipping_address_id = Address::model()->address_id;
$orders->payment_details_id = 1;
$orders->order_date = date('d-m-y');
$orders->shipping_amount= NULL;
$orders->total_amount = 100;
$orders->created_date = date('d-m-y');
$orders->save();
$this->render('checkout_shipping', array('address'=>$address,'selected_address'=>$selected_address),false,true);
ユーザーが配送先住所フォームの入力を完了した後に、ORDERS テーブルに入力するコードを挿入しました。
わかりました、次のように ORDERS モデルでリレーションを使用しました:
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'billingAddress' => array(self::BELONGS_TO, 'Address', 'billing_address_id'),
'shippingAddress' => array(self::BELONGS_TO, 'Address', 'shipping_address_id'),
);
}