6 Commits

3 changed files with 31 additions and 7 deletions

View File

@ -65,7 +65,7 @@ abstract class Insert extends Query implements InsertInterface
} }
public function addValue(int|string $value): InsertInterface public function addValue(int|string $value): InsertInterface
{ {
if (!is_numeric($value)) { if (!is_numeric($value) and $value !== '?') {
$value = "'{$value}'"; $value = "'{$value}'";
} }
$this->values []= $value; $this->values []= $value;

View File

@ -105,7 +105,19 @@ abstract class Select extends Query implements SelectInterface
} }
public function getJoinString(): string public function getJoinString(): string
{ {
return implode(' ', $this->getJoins()); $str = [];
foreach ($this->getJoins() as $i => $join) {
if ($i === 0) {
$str []= $join;
continue;
}
if (!str_contains('and ', strtolower($join)) and !str_contains('or ', strtolower($join))) {
$str []= "AND {$join}";
continue;
}
$str []= $join;
}
return implode(' ', $str);
} }
protected array $conditions; protected array $conditions;
public function setConditions(array $conditions): SelectInterface public function setConditions(array $conditions): SelectInterface
@ -126,7 +138,19 @@ abstract class Select extends Query implements SelectInterface
} }
public function getConditionString(): string public function getConditionString(): string
{ {
return implode(' ', $this->getConditions()); $str = [];
foreach ($this->getConditions() as $i => $condition) {
if ($i === 0) {
$str []= $condition;
continue;
}
if (!str_contains('and ', strtolower($condition)) and !str_contains('or ', strtolower($condition))) {
$str []= "AND {$condition}";
continue;
}
$str []= $condition;
}
return implode(' ', $str);
} }
protected array $groups; protected array $groups;
public function setGroups(array $groups): SelectInterface public function setGroups(array $groups): SelectInterface

View File

@ -20,18 +20,18 @@ class QueryBuilder implements QBInterface
public function select(array $columns = ['*']): Select public function select(array $columns = ['*']): Select
{ {
return $this->getContainer()->get(Select::class)->select($columns); return $this->getContainer()->make(Select::class)->select($columns);
} }
public function insert(string $table): Insert public function insert(string $table): Insert
{ {
return $this->getContainer()->get(Insert::class)->into($table); return $this->getContainer()->make(Insert::class)->into($table);
} }
public function update(string $table): Update public function update(string $table): Update
{ {
return $this->getContainer()->get(Update::class)->table($table); return $this->getContainer()->make(Update::class)->table($table);
} }
public function delete(string $table): Delete public function delete(string $table): Delete
{ {
return $this->getContainer()->get(Delete::class)->from($table); return $this->getContainer()->make(Delete::class)->from($table);
} }
} }