在Yii2中存储Json数据问题

时间:2018-06-02 20:29:27

标签: jquery ajax yii2

我必须以这种格式保存数据{“dashboard_layout”:[9,10,5]}。 但目前我的数据以这种格式保存。{“dashboard_layout”:[“9,5”,“10,5”]}。

例如,如果$ id = 5,那么我必须将数据存储在{“dashboard_layout”中:[9,10,5]}

 public function actionDashboardBlockAdd(){
    if(isset($_POST['id'])) {
        $id = $_POST['id'];
        $model = \app\models\UserPreferences::find()->where(['user_id' => Yii::$app->user->identity->user_id])->one();
        // check here if model is not null 
        $perferencesOther = json_decode($model->others);

      if(!empty($perferencesOther) && isset($perferencesOther->dashboard_layout)) {
            $dashboardLayout = [];   
            foreach ($perferencesOther->dashboard_layout as $key => $value) {                  
                    $dashboardLayout[] = $value.','.$id;  
            } 

            $perferencesOther->dashboard_layout = $dashboardLayout;                
            // store updated preferencves in db
            $model->others = json_encode($perferencesOther); 
            $model->save();

        echo Json::encode([
            'status' => true,
            'value'=>$model->others
        ]); 
         }
    } else {
        echo Json::encode([
            'status' => false,              
        ]);
    } 
}

有人可以帮我解决问题???

1 个答案:

答案 0 :(得分:0)

  public function actionDashboardBlockAdd(){
    if(isset($_POST['id'])) {
        $id = $_POST['id'];
        $model = \app\models\UserPreferences::find()->where(['user_id' => Yii::$app->user->identity->user_id])->one();
        // check here if model is not null 
        $perferencesOther = json_decode($model->others);

      if(!empty($perferencesOther) && isset($perferencesOther->dashboard_layout)) {
            $dashboardLayout = [];   
            foreach ($perferencesOther->dashboard_layout as $key => $value) {                  
                    $dashboardLayout[] = $value;  
            } 
            array_push($dashboardLayout,$id);
            $perferencesOther->dashboard_layout = $dashboardLayout;                
            // store updated preferencves in db
            $model->others = json_encode($perferencesOther,JSON_NUMERIC_CHECK); 
            $model->save();

        echo Json::encode([
            'status' => true,
            'value'=>$model->others
        ]); 
         }
    } else {
        echo Json::encode([
            'status' => false,              
        ]);
    } 
}

使用array_push解决了我的问题