public function compileFrom(Query $query) { if (is_string($query->from)) { return 'FROM ' . $this->wrapperTable($query->from); } elseif ($query->from instanceof \Closure) { $subQuery = $query->newQuery(); call_user_func_array($query->from, [$subQuery]); //return 'FROM (' . $subQuery->toSql() . ') AS ' . $this->wrapperTable($subQuery->from) . ' '; return 'FROM (' . $subQuery->toSql() . ') AS tmp'; } elseif ($query->from instanceof Query) { return 'FROM (' . $query->from->toSql() . ') AS tmp'; } }