select($select, $alias); } /** * Proceed with UPDATE builder. */ public function update(): UpdateBuilder { return new UpdateBuilder(); } /** * Proceed with DELETE builder. */ public function delete(): DeleteBuilder { return new DeleteBuilder(); } /** * Proceed with INSERT builder. */ public function insert(): InsertBuilder { return new InsertBuilder(); } /** * Proceed with UNION builder. */ public function union(): UnionBuilder { return new UnionBuilder(); } /** * Clone an existing query and proceed modifying it. * * @return SelectBuilder|UpdateBuilder|DeleteBuilder|InsertBuilder|UnionBuilder * @throws RuntimeException */ public function clone(Query $query): SelectBuilder|UpdateBuilder|DeleteBuilder|InsertBuilder|UnionBuilder { $class = new ReflectionClass($query); $methodName = ucfirst($class->getShortName()); if (!method_exists($this, $methodName)) { throw new RuntimeException("Can't clone an unsupported query."); } return $this->$methodName()->clone($query); } }