Scalr\Model\Entity\Farm::delete PHP Метод

delete() публичный Метод

См. также: AbstractEntity::delete()
public delete ( )
    public function delete()
    {
        if ($this->status != FARM_STATUS::TERMINATED) {
            throw new FarmInUseException("Cannot delete a running farm, please terminate a farm before deleting it");
        }
        $servers = Server::find([['farmId' => $this->id], ['status' => ['$ne' => Server::STATUS_TERMINATED]]]);
        if (count($servers)) {
            throw new FarmInUseException(sprintf("Cannot delete a running farm, %s server%s still running on this farm", count($servers), count($servers) > 1 ? 's are' : ' is'));
        }
        $db = $this->db();
        try {
            $db->BeginTrans();
            foreach ($this->farmRoles as $farmRole) {
                $farmRole->delete();
            }
            $this->deleteScheduled();
            $db->Execute("DELETE FROM `logentries` WHERE `farmid` = ?", [$this->id]);
            $db->Execute("DELETE FROM `elastic_ips` WHERE `farmid` = ?", [$this->id]);
            $db->Execute("DELETE FROM `events` WHERE `farmid` = ?", [$this->id]);
            $db->Execute("DELETE FROM `ec2_ebs` WHERE `farm_id` = ?", [$this->id]);
            $db->Execute("DELETE FROM `farm_lease_requests` WHERE `farm_id` = ?", [$this->id]);
            foreach ($this->servers as $server) {
                $server->delete();
            }
            $db->Execute("UPDATE `dns_zones` SET `farm_id` = '0', `farm_roleid` ='0' WHERE `farm_id` = ?", [$this->id]);
            $db->Execute("UPDATE `apache_vhosts` SET `farm_id` = '0', `farm_roleid` ='0' WHERE `farm_id` = ?", [$this->id]);
            parent::delete();
            $db->CommitTrans();
        } catch (Exception $e) {
            $db->RollbackTrans();
            throw $e;
        }
        $db->Execute("DELETE FROM `orchestration_log` WHERE `farmid` = ?", [$this->id]);
    }