public function actionBindCats() { \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; $request = \Yii::$app->request->post(); $dgis_cat = Category2gis::findOne($request['dgis_cat']); if (!$dgis_cat) { return ['error' => 'Error! 2gis category not found!']; } $binded_cats_all = $dgis_cat->cats2dis ? explode(',', $dgis_cat->cats2dis) : []; $binded_cats = Category2dis::findAll(['parentid' => $request['ddis_root'], 'catid' => explode(',', $dgis_cat->cats2dis)]); $binded_cats_ids = []; foreach ($binded_cats as $cat) { $binded_cats_ids[] = $cat->catid; } $result_binded_cats_id = array_diff($binded_cats_all, $binded_cats_ids); $need_to_bind = isset($request['cats']) ? $request['cats'] : []; $result = array_merge($result_binded_cats_id, $need_to_bind); $dgis_cat->cats2dis = count($result) ? implode(',', $result) : null; $dgis_cat->save(); return ArrayHelper::map(Category2dis::findAll(['catid' => $result]), 'catid', 'catname'); }