63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Core\Driver\SQL\Query;
 | |
| 
 | |
| use Core\Driver\SQL\Condition\Compare;
 | |
| use Core\Driver\SQL\Condition\CondBool;
 | |
| use Core\Driver\SQL\Condition\CondNot;
 | |
| use Core\Driver\SQL\Condition\CondOr;
 | |
| use Core\Driver\SQL\SQL;
 | |
| 
 | |
| abstract class ConditionalQuery extends Query {
 | |
| 
 | |
|   private array $conditions;
 | |
| 
 | |
|   public function __construct(SQL $sql) {
 | |
|     parent::__construct($sql);
 | |
|     $this->conditions = [];
 | |
|   }
 | |
| 
 | |
|   public function getWhereClause(array &$params): string {
 | |
|     return $this->sql->getWhereClause($this->getConditions(), $params);
 | |
|   }
 | |
| 
 | |
|   public function getConditions(): array {
 | |
|     return $this->conditions;
 | |
|   }
 | |
| 
 | |
| 
 | |
|   public function where(...$conditions): static {
 | |
|     $this->conditions[] = (count($conditions) === 1 ? $conditions : new CondOr($conditions));
 | |
|     return $this;
 | |
|   }
 | |
| 
 | |
|   public function whereEq(string $col, mixed $val): static {
 | |
|     $this->conditions[] = new Compare($col, $val, "=");
 | |
|     return $this;
 | |
|   }
 | |
| 
 | |
|   public function whereNeq(string $col, mixed $val): static {
 | |
|     $this->conditions[] = new Compare($col, $val, "!=");
 | |
|     return $this;
 | |
|   }
 | |
| 
 | |
|   public function whereGt(string $col, mixed $val): static {
 | |
|     $this->conditions[] = new Compare($col, $val, ">");
 | |
|     return $this;
 | |
|   }
 | |
| 
 | |
|   public function whereLt(string $col, mixed $val): static {
 | |
|     $this->conditions[] = new Compare($col, $val, "<");
 | |
|     return $this;
 | |
|   }
 | |
| 
 | |
|   public function whereTrue(string $col): static {
 | |
|     $this->conditions[] = new CondBool($col);
 | |
|     return $this;
 | |
|   }
 | |
| 
 | |
|   public function whereFalse(string $col): static {
 | |
|     $this->conditions[] = new CondNot(new CondBool($col));
 | |
|     return $this;
 | |
|   }
 | |
| } | 
