execute($sql); // 迁移qimall_addons_cloud_stock_agent_order到qimall_addons_cloud_stock_agent_order_details $select = 'id, mall_id, user_id, goods_id, num, status, created_at, updated_at'; foreach (CloudStockAgentOrder::find()->select($select)->asArray()->batch(1000) as $batchItem) { $orderIds = array_column($batchItem, 'id'); $findOrderIds = CloudStockAgentOrderDetails::find() ->where(['order_id' => $orderIds]) ->select('order_id') ->column(); $insertOrderIds = array_diff($orderIds, $findOrderIds); $batchItem = array_column($batchItem, null, 'id'); $insertData = []; foreach ($insertOrderIds as $insertOrderId) { $order = $batchItem[$insertOrderId] ?? []; if (empty($order)) { continue; } $insertData[] = [ 'user_id' => $order['user_id'], 'mall_id' => $order['mall_id'], 'goods_id' => $order['goods_id'], 'order_id' => $order['id'], 'num' => $order['num'], 'status' => $order['status'], 'created_at' => $order['created_at'], 'updated_at' => $order['updated_at'], ]; } if ($insertData) { try { \Yii::$app->db->createCommand()->batchInsert( CloudStockAgentOrderDetails::tableName(), array_keys($insertData[0]), $insertData )->execute(); }catch (\Exception $e) { \Yii::$app->custom->logs(FormatHelper::exception($e, '云库存自提订单迁移到details表失败'), $insertData); } } } } /** * {@inheritdoc} */ public function safeDown() { return false; } }