我正在开放式购物车中创建模型。使用vqMod我在模型中编写代码。 如果表中不存在coloumn,我想通过添加coloumn来更改表。 这是我的代码。
$field_name = 'GeoZoneID';
$col = $this->db->query("SELECT ".$field_name." FROM ".DB_PREFIX."order");
if (!$col){
$this->db->query("ALTER TABLE ".DB_PREFIX."order ADD ".$field_name." int(11) First");
$zone_id=array();
$zone_id=$this->db->query("SELECT zgz.geo_zone_id FROM `oc_zone_to_geo_zone` AS zgz WHERE zone_id = (SELECT shipping_zone_id FROM oc_order WHERE order_id = '".$order_id."' ) ");
$zone_id=$zone_id->row['geo_zone_id'];
$query=$this->db->query("UPDATE `oc_order` SET GeoZoneID ='".$zone_id."' WHERE order_id ='".$order_id."'");
}
else {
$zone_id=array();
$zone_id=$this->db->query("SELECT zgz.geo_zone_id FROM `oc_zone_to_geo_zone` AS zgz WHERE zone_id = (SELECT shipping_zone_id FROM oc_order WHERE order_id = '".$order_id."' ) ");
$zone_id=$zone_id->row['geo_zone_id'];
$query=$this->db->query("UPDATE `oc_order` SET GeoZoneID ='".$zone_id."' WHERE order_id ='".$order_id."'");
}
我不知道为什么它不执行它不会改变我的表格。
答案 0 :(得分:1)
我最终解决了这个问题..
$hasModelChoiceField = FALSE;
$result = $this->db->query( "DESCRIBE `".DB_PREFIX."order`;" );
foreach ($result->rows as $row) {
if ($row['Field'] == 'GeoZoneID') {
$hasModelChoiceField = TRUE;
break;
}
}
if (!$hasModelChoiceField) {
$sql = "ALTER TABLE `".DB_PREFIX."order` ADD GeoZoneID INT( 11 ) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT ''";
$this->db->query( $sql );
$zone_id=array();
$zone_id=$this->db->query("SELECT zgz.geo_zone_id FROM `" . DB_PREFIX . "oc_zone_to_geo_zone` AS zgz WHERE zone_id = ( SELECT shipping_zone_id FROM `".DB_PREFIX."order`WHERE order_id = '".$order_id."' ) ");$zone_id=$zone_id>row['geo_zone_id'];$query=$this->db->query("UPDATE `" . DB_PREFIX . "order` SET GeoZoneID ='".$zone_id."' WHERE order_id ='".$order_id."'");
}
else{
$zone_id=array();
$zone_id=$this->db->query("SELECT zgz.geo_zone_id FROM`oc_zone_to_geo_zone` AS zgzWHERE zone_id = ( SELECT shipping_zone_idFROM oc_orderWHERE order_id = '".$order_id."' ) ");$zone_id=$zone_id->row['geo_zone_id'];$query=$this->db->query("UPDATE `" . DB_PREFIX . "order` SET GeoZoneID ='".$zone_id."' WHERE order_id ='".$order_id."'");
}
答案 1 :(得分:0)
在模型部件中使用以下功能。如果DB中不存在,它将创建您的列。
public function checkFieldInModel() {
$isModelField = FALSE;
$result = $this->db->query( "DESCRIBE `".DB_PREFIX."order`;" );
foreach ($result->rows as $row) {
if ($row['Field'] == 'GeoZoneID') {
$isModelField = TRUE;
break;
}
}
if (!$isModelField) {
$sql = "ALTER TABLE `".DB_PREFIX."option` ADD `GeoZoneID` int( 11 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''";
$this->db->query( $sql );
}
}
或者只需使用以下命令在数据库中添加Direct列:
ALTER表database.table_name add column_name data_type CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
ALTER表cart.oc_product_option_value add pc_code varchar(255)CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;