public function saveImgs($imgs) { if (count($imgs) > 0) { $imgs = array_map('intval', $imgs); $imgs = array_unique($imgs); $imgs = array_slice($imgs, 0, self::MAX_IMG_SCHOOL); EntityLink::deleteAll(['AND', 'entity_1 = :entity_1', 'entity_1_id = :entity_1_id', 'entity_2 = :entity_2', ['NOT IN', 'entity_2_id', $imgs]], [':entity_1' => self::THIS_ENTITY, ':entity_1_id' => $this->id, ':entity_2' => Img::THIS_ENTITY]); $entityLinksObj = EntityLink::find()->andWhere(['AND', 'entity_1 = :entity_1', 'entity_1_id = :entity_1_id', 'entity_2 = :entity_2', ['IN', 'entity_2_id', $imgs]], [':entity_1' => self::THIS_ENTITY, ':entity_1_id' => $this->id, ':entity_2' => Img::THIS_ENTITY])->all(); $entityLinks = []; foreach ($entityLinksObj as $entityLink) { $entityLinks[$entityLink->entity_2_id] = $entityLink; } $imgsObjs = $this->imgs; $imgsId = []; foreach ($imgsObjs as $key => $img) { $imgsId[$key] = $img->id; } $index = 0; foreach ($imgs as $key => $imgId) { if (!in_array($imgId, $imgsId)) { $entityLink = new EntityLink(); $entityLink->entity_1 = self::THIS_ENTITY; $entityLink->entity_1_id = $this->id; $entityLink->entity_2 = Img::THIS_ENTITY; $entityLink->entity_2_id = $imgId; $entityLink->sort = $index++; $entityLink->save(); } else { if (!empty($entityLinks[$imgId])) { $entityLink = $entityLinks[$imgId]; $entityLink->sort = $index++; $entityLink->save(); } } } } else { EntityLink::deleteAll(['entity_1' => self::THIS_ENTITY, 'entity_1_id' => $this->id, 'entity_2' => Img::THIS_ENTITY]); } }