/** * format item prop data to json format from post * @param $itemProps * @return array * @author Lujie.Zhou(gao_lujie@live.cn, qq:821293064). */ protected function handleItemProps($itemProps) { $props = array(); $props_name = array(); foreach ($itemProps as $pid => $vid) { $itemProp = Yii::createObject(ItemProp::className()); $itemProp = $itemProp::findOne(['prop_id' => $pid]); $pname = $itemProp->prop_name; if (is_array($vid)) { $props[$pid] = array(); $props_name[$pname] = array(); foreach ($vid as $v) { $props[$pid][] = $pid . ':' . $v; $propValue = Yii::createObject(PropValue::className()); $propValue = $propValue::findOne(['value_id' => $v]); $vname = $propValue ? $propValue->value_name : $v; $props_name[$pname][] = $pname . ':' . $vname; } } else { $props[$pid] = $pid . ':' . $vid; $propValue = Yii::createObject(PropValue::className()); $propValue = $propValue::findOne(['value_id' => $vid]); $vname = $propValue ? $propValue->value_name : $vid; $props_name[$pname] = $pname . ':' . $vname; } } return array(json_encode($props), json_encode($props_name)); }
/** * @return \yii\db\ActiveQuery */ public function getPropValues() { return $this->hasMany(PropValue::className(), ['prop_id' => 'prop_id']); }
protected function savePropValue($prop_id) { if (isset($_POST['PropValue'])) { $propValues = $_POST['PropValue']; unset($_POST['PropValue']); if (is_array($propValues['value_name']) && ($count = count($propValues['value_name']))) { for ($i = 0; $i < $count; $i++) { if (isset($propValues['value_id'][$i]) && $propValues['value_id'][$i]) { $propValue = PropValue::find()->where(['value_id' => $propValues['value_id'][$i]])->one(); } else { $propValue = new PropValue(); } $propValue->setAttributes(array('prop_id' => $prop_id, 'value_name' => $propValues['value_name'][$i], 'sort_order' => $i, 'value_alias' => $propValues['value_name'][$i], 'status' => 1)); if (isset($propValues['value_id'][$i]) && $propValues['value_id'][$i]) { $propValue->update(); } else { $propValue->save(); } $propValues['value_id'][$i] = $propValue->value_id; } //删除 $models = PropValue::findAll(['prop_id' => $prop_id]); $delArr = array(); foreach ($models as $k1 => $v1) { if (!in_array($v1->value_id, $propValues['value_id'])) { $delArr[] = $v1->value_id; } } if (count($delArr)) { PropValue::deleteAll('value_id IN (' . implode(', ', $delArr) . ')'); } } else { //已经没有属性了,要清除数据表内容 PropValue::deleteAll('prop_id = ' . $prop_id); } } }