queryBuilder = new $cls(); $this->queryBuilder->parent = $queryBuilder; } public function set(string $side, /* QueryBuilder|string */ $table, string $field, /* QueryBuilder|string */ $value) { $this->side = $side; $this->table = $table; $this->where($this->field = $field, $this->value = $value); } public function order() : float { return $this->order + ( $this->joinOrder / 100 ); } public function render() : string { return $this->renderSegments([ strtoupper($this->side), $this->outer ? static::SQL_OUTER : "", static::SQL_TOKEN, $this->table, $this->alias ?? "", $this->attachment, $this->queryBuilder->render(true) ?? "" ]); } }