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