/** * 对属性值表的修改接口 * @param array $conditions 修改数据的条件 * [ * 'news_id' => '资讯号', * 'attr_id' => '属性id' * ~~~ * ] * @param string $idsStr 页面修改属性值 * - 'id1,id2...' */ public function saveAttrVals($conditions = [], $idsStr) { $valArr = PostAttrVal::find()->where($conditions)->asArray()->all(); $valArr = ArrayHelper::getColumn($valArr, 'attr_value_text'); //数据库中的value数组 $ids = empty($idsStr) ? [] : explode(',', $idsStr); //页面传来的修改value $insert = array_diff($ids, $valArr); //要新增value $del = array_diff($valArr, $ids); //要删除的valu //插入数据 foreach ($insert as $val) { $mPostAttrVal = new PostAttrVal(); $mPostAttrVal->attributes = array_merge($conditions, ['attr_value_text' => $val]); $mPostAttrVal->save(); } //删除数据 foreach ($del as $val) { $model = PostAttrVal::findOne(array_merge($conditions, ['attr_value_text' => $val])); $model->delete(); } }