Ejemplo n.º 1
0
 /**
  * 对属性值表的修改接口
  * @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();
     }
 }