例如插入订单表和订单详情表
$orderList为订单数组,其中字段orderGoods为订单商品数据
$B2bOrderDtl = new B2bOrderDtlModel();
$B2bOrder= new B2bOrderModel();
foreach($orderList as $v){
$data=array(
'orderid' => 'cms_sale_order_seq.nextval', //表的序列.nextval,nextval函数获取下一个序列值;注:表的序列一般为表名_seq
'accountid' => 1000,
'customerid' => $val['erp_companyid'],
'credate' => date('Y-m-d H:i:s', $val['add_time']);
);
//生成sql语句
$sql = $this->getAddSql($order);
if($result=$B2bOrder->execute($sql)){
$B2bOrderDtl->addOrderDtl($this->getLastInsID(), $val['orderGoods']);
}
}
//==================获取上一次插入id=================
/**
* 取得Oracle最近插入的ID
*
* @param string $sequence 序列名
* @return int
*/
public function lastInsertId($sequence = '') {
try {
$lastInsID = $this->_linkID->lastInsertId();
} catch(\PDOException $e) {
//对于驱动不支持PDO::lastInsertId()的情况
try {
$lastInsID = 0;
$seqPrefix = $this->sequence_prefix ? $this->sequence_prefix : '_seq';
$sequence = $sequence ? $sequence : $this->table . $seqPrefix;
$q = $this->query("SELECT {$sequence}.CURRVAL as t FROM DUAL"); //获取当前序列号
if ($q) {
$lastInsID = $q[0]['t'];
}
} catch(\Exception $e) {
//print "Error!: " . $e->getMessage() . "";
//exit;
}
}
return $lastInsID;
}
//=====================生成sql语句=====================
public function getAddSql($data){
foreach($data as $key=>$val){
$fields[]=$key;
}
$fields_str=implode(',',fields);
$sql="insert into 表名 ({$fields_str}) values ({$data['orderid']},{$data['accountid']},{$data['customerid']},to_date({$data['credate']},'yyyy-mm-dd hh24:mi:ss'))";
return $sql;
}