where([$data[1] => $data[2]])->all(); $remain = []; foreach ($related as $cto) { if(in_array($cto->id, $ids)) { $remain[] = $cto->id; } else { $cto->delete(); } } foreach ($ids as $id) { if(!in_array($id, $remain)) { $newCto = new self(); $newCto->{$data[1]} = $data[2]; $newCto->{$data[0]} = $id; $newCto->save(); } } } public static function appendPartner($partner_id, $project_id) { $related = self::find()->where(['partner_id' => $partner_id, 'project_id' => $project_id])->one(); if(!$related) { $newCto = new self(); $newCto->partner_id = $partner_id; $newCto->project_id = $project_id; $newCto->save(); } } }