getType()) { case QueryType::DROP: $components = $this->dropComponents; break; default: throw new \InvalidArgumentException('Unknown query type.'); } /* Loop all possible query components and if they exist compile them. */ foreach ($components as $component) { if (isset($query->{$component}) && !empty($query->{$component})) { $sql[$component] = $this->{'compile' . ucfirst($component)}($query, $query->{$component}); } } return $sql; } /** * Compile drop query. * * @param BuilderAbstract $query Query * @param array $tables Tables to drop * * @return string * * @since 1.0.0 */ protected function compileDrop(BuilderAbstract $query, array $tables) : string { $expression = $this->expressionizeTableColumn($tables, $query->getPrefix()); if ($expression === '') { $expression = '*'; } return 'DROP TABLE ' . $expression; } }