/** * 根据规格ID获取商品规格 * * @param integer $attribute_id * @return array */ public static function get($attribute_id) { $attribute = AttributeService::get_instance()->get($attribute_id); $attribute = coding::decode_attribute($attribute); $options = Attribute_valueService::get_instance()->index(array('where' => array('attribute_id' => $attribute['id']), 'orderby' => 'order')); $attribute['options'] = array(); foreach ($options as $option) { unset($option['attribute_id']); unset($option['order']); $attribute['options'][$option['id']] = $option; } return $attribute; }
/** * 根据 WHERE 条件获取商品特性列表 * * @param array $where * @return array */ public static function index($where) { $features = array(); $feature_arr = AttributeService::get_instance()->index(array('where' => $where, 'orderby' => 'order')); foreach ($feature_arr as $feature) { $feature = coding::decode_feature($feature); $feature['options'] = array(); $features[$feature['id']] = $feature; } if (!empty($features)) { $options = Attribute_valueService::get_instance()->index(array('where' => array('attribute_id' => array_keys($features)), 'orderby' => 'order')); foreach ($options as $option) { //$option = coding::decode_featureoption($option); $featid = $option['attribute_id']; unset($option['attribute_id']); unset($option['order']); $features[$featid]['options'][$option['id']] = $option; } } return $features; }
/** * 根据 classify_id 获取关联的规格及规格项 * * @param int $classify_id * @return array * @throws MyRuntimeException */ public function get_attribute_options_by_classify_id($classify_id, $apply = NULL) { $return_array = array(); try { /* 判断 classify 是否存在 $classify = $this->get($classify_id); if(!$classify){ throw new MyRuntimeException('Object not found.', 500); }*/ // 获取关联表数据 $attribute_ids = $this->get_attribute_ids_by_classify_id($classify_id, $apply); if ($attribute_ids) { // 获取所有关联的attribute $query_struct = array('where' => array('id' => $attribute_ids), 'orderby' => array('id' => 'ASC')); $attributes = AttributeService::get_instance()->query_assoc($query_struct); // 每个ID必须都是有效的 if (count($attributes) != count($attribute_ids)) { throw new MyRuntimeException('Internal error.', 500); } // 组装返回数组 foreach ($attributes as $attribute) { //$attribute = coding::decode_attribute($attribute); $attribute['options'] = array(); $return_array[$attribute['id']] = $attribute; } // 获取关联项 $query_struct = array('where' => array('attribute_id' => $attribute_ids)); $attributeoptions = Attribute_valueService::get_instance()->query_assoc($query_struct); foreach ($attributeoptions as $attributeoption) { //$attributeoption = coding::decode_attributeoption($attributeoption); $attribute_id = $attributeoption['attribute_id']; $return_array[$attribute_id]['options'][$attributeoption['id']] = $attributeoption; } } return $return_array; } catch (MyRuntimeException $ex) { throw $ex; } }
/** * 通过 attribute_id获取该 attribute之下所有的 attributeoption * @param int $attribute_id 规格ID * @return array * @throws MyRuntimeException */ public function get_attributeoptions_by_attribute_id($attribute_id) { $return_array = array(); $request_struct = array('where' => array('attribute_id' => $attribute_id), 'orderby' => array('order' => 'ASC', 'id' => 'ASC')); $result = Attribute_valueService::get_instance()->query_assoc($request_struct); if (!empty($result)) { foreach ($result as $key => $val) { $val = coding::decode_attributeoption($val); $return_array[$val['id']] = $val; } } return $return_array; }
public function option_relation_data() { role::check('product_attribute_delete'); $return_struct = array('status' => 0, 'code' => 501, 'msg' => 'Not Implemented', 'content' => array()); try { //* 初始化返回数据 */ $return_data = array(); //* 收集请求数据 ==根据业务逻辑定制== */ $request_data = $this->input->get(); //必须为ajax请求 if (!$this->is_ajax_request()) { throw new MyRuntimeException(Kohana::lang('o_global.bad_request'), 404); } //数据验证 if (!isset($request_data['option_id']) || !is_numeric($request_data['option_id'])) { throw new MyRuntimeException(Kohana::lang('o_global.input_error'), 404); } // 调用服务 $attributeoption_service = Attribute_valueService::get_instance(); if ($attributeoption_service->is_relation_by_attributeoption_id($request_data['option_id'])) { throw new MyRuntimeException('该规格已被关联,请取消关联之后重试!', 500); } $attributeoption_service->delete_by_attribute_value_id($request_data['option_id']); //* 补充&修改返回结构体 */ $return_struct['status'] = 1; $return_struct['code'] = 200; $return_struct['msg'] = Kohana::lang('o_global.delete_success'); $return_struct['content'] = $return_data; //* 请求类型 */ if ($this->is_ajax_request()) { // ajax 请求 // json 输出 $this->template->content = $return_struct; } else { throw new MyRuntimeException(Kohana::lang('o_global.bad_request'), 404); } // end of request type determine } catch (MyRuntimeException $ex) { $this->_ex($ex, $request_data, $return_struct); } }