SQL Join table Alias
This commit is contained in:
parent
810f51bdcc
commit
fae8a71bac
@ -8,17 +8,20 @@ class Join {
|
||||
private string $table;
|
||||
private string $columnA;
|
||||
private string $columnB;
|
||||
private $tableAlias;
|
||||
|
||||
public function __construct($type, $table, $columnA, $columnB) {
|
||||
public function __construct($type, $table, $columnA, $columnB, $tableAlias=null) {
|
||||
$this->type = $type;
|
||||
$this->table = $table;
|
||||
$this->columnA = $columnA;
|
||||
$this->columnB = $columnB;
|
||||
$this->tableAlias = $tableAlias;
|
||||
}
|
||||
|
||||
public function getType() { return $this->type; }
|
||||
public function getTable() { return $this->table; }
|
||||
public function getColumnA() { return $this->columnA; }
|
||||
public function getColumnB() { return $this->columnB; }
|
||||
public function getTableAlias() { return $this->tableAlias; }
|
||||
|
||||
}
|
@ -4,6 +4,7 @@ namespace Driver\SQL;
|
||||
|
||||
use \Api\Parameter\Parameter;
|
||||
|
||||
use DateTime;
|
||||
use \Driver\SQL\Column\Column;
|
||||
use \Driver\SQL\Column\IntColumn;
|
||||
use \Driver\SQL\Column\SerialColumn;
|
||||
@ -91,15 +92,21 @@ class MySQL extends SQL {
|
||||
$sqlParams[0] .= 'd';
|
||||
break;
|
||||
case Parameter::TYPE_DATE:
|
||||
$value = $value->format('Y-m-d');
|
||||
if ($value instanceof DateTime) {
|
||||
$value = $value->format('Y-m-d');
|
||||
}
|
||||
$sqlParams[0] .= 's';
|
||||
break;
|
||||
case Parameter::TYPE_TIME:
|
||||
$value = $value->format('H:i:s');
|
||||
if ($value instanceof DateTime) {
|
||||
$value = $value->format('H:i:s');
|
||||
}
|
||||
$sqlParams[0] .= 's';
|
||||
break;
|
||||
case Parameter::TYPE_DATE_TIME:
|
||||
$value = $value->format('Y-m-d H:i:s');
|
||||
if ($value instanceof DateTime) {
|
||||
$value = $value->format('Y-m-d H:i:s');
|
||||
}
|
||||
$sqlParams[0] .= 's';
|
||||
break;
|
||||
case Parameter::TYPE_ARRAY:
|
||||
|
29
core/Driver/SQL/Query/Drop.php
Normal file
29
core/Driver/SQL/Query/Drop.php
Normal file
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Driver\SQL\Query;
|
||||
|
||||
use Driver\SQL\SQL;
|
||||
|
||||
class Drop extends Query {
|
||||
|
||||
private string $table;
|
||||
|
||||
/**
|
||||
* Drop constructor.
|
||||
* @param SQL $sql
|
||||
* @param string $table
|
||||
*/
|
||||
public function __construct(\Driver\SQL\SQL $sql, string $table) {
|
||||
parent::__construct($sql);
|
||||
$this->table = $table;
|
||||
}
|
||||
|
||||
public function execute() {
|
||||
$this->sql->executeDrop($this);
|
||||
}
|
||||
|
||||
public function getTable() {
|
||||
return $this->table;
|
||||
}
|
||||
}
|
@ -40,13 +40,13 @@ class Select extends Query {
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function innerJoin($table, $columnA, $columnB) {
|
||||
$this->joins[] = new Join("INNER", $table, $columnA, $columnB);
|
||||
public function innerJoin($table, $columnA, $columnB, $tableAlias=null) {
|
||||
$this->joins[] = new Join("INNER", $table, $columnA, $columnB, $tableAlias);
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function leftJoin($table, $columnA, $columnB) {
|
||||
$this->joins[] = new Join("LEFT", $table, $columnA, $columnB);
|
||||
public function leftJoin($table, $columnA, $columnB, $tableAlias=null) {
|
||||
$this->joins[] = new Join("LEFT", $table, $columnA, $columnB, $tableAlias);
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
@ -16,6 +16,7 @@ use \Driver\SQL\Constraint\PrimaryKey;
|
||||
use \Driver\SQL\Constraint\ForeignKey;
|
||||
use Driver\SQL\Query\CreateTable;
|
||||
use Driver\SQL\Query\Delete;
|
||||
use Driver\SQL\Query\Drop;
|
||||
use Driver\SQL\Query\Insert;
|
||||
use Driver\SQL\Query\Query;
|
||||
use Driver\SQL\Query\Select;
|
||||
@ -73,6 +74,10 @@ abstract class SQL {
|
||||
return new Update($this, $table);
|
||||
}
|
||||
|
||||
public function drop(string $table) {
|
||||
return new Drop($this, $table);
|
||||
}
|
||||
|
||||
// ####################
|
||||
// ### ABSTRACT METHODS
|
||||
// ####################
|
||||
@ -107,7 +112,9 @@ abstract class SQL {
|
||||
$joinTable = $this->tableName($join->getTable());
|
||||
$columnA = $this->columnName($join->getColumnA());
|
||||
$columnB = $this->columnName($join->getColumnB());
|
||||
$joinStr .= " $type JOIN $joinTable ON $columnA=$columnB";
|
||||
$tableAlias = ($join->getTableAlias() ? " " . $join->getTableAlias() : "");
|
||||
|
||||
$joinStr .= " $type JOIN $joinTable$tableAlias ON $columnA=$columnB";
|
||||
}
|
||||
}
|
||||
|
||||
@ -248,6 +255,12 @@ abstract class SQL {
|
||||
return $this->execute($query, $params);
|
||||
}
|
||||
|
||||
public function executeDrop(Drop $drop) {
|
||||
$query = "DROP TABLE " . $this->tableName($drop->getTable());
|
||||
if ($drop->dump) { var_dump($query); }
|
||||
return $this->execute($query);
|
||||
}
|
||||
|
||||
protected function getWhereClause($conditions, &$params) {
|
||||
if (!$conditions) {
|
||||
return "";
|
||||
|
Loading…
Reference in New Issue
Block a user