Limit, Order By
This commit is contained in:
parent
9de6b22a90
commit
2636719583
@ -22,6 +22,7 @@ class Fetch extends Request {
|
|||||||
->innerJoin("UserNotification", "UserNotification.notification_id", "Notification.uid")
|
->innerJoin("UserNotification", "UserNotification.notification_id", "Notification.uid")
|
||||||
->where(new Compare("UserNotification.user_id", $userId))
|
->where(new Compare("UserNotification.user_id", $userId))
|
||||||
->where(new Compare("UserNotification.seen", false))
|
->where(new Compare("UserNotification.seen", false))
|
||||||
|
->orderBy("created_at")->descending()
|
||||||
->execute();
|
->execute();
|
||||||
|
|
||||||
$this->success = ($res !== FALSE);
|
$this->success = ($res !== FALSE);
|
||||||
@ -53,6 +54,7 @@ class Fetch extends Request {
|
|||||||
->innerJoin("UserGroup", "GroupNotification.group_id", "UserGroup.group_id")
|
->innerJoin("UserGroup", "GroupNotification.group_id", "UserGroup.group_id")
|
||||||
->where(new Compare("UserGroup.user_id", $userId))
|
->where(new Compare("UserGroup.user_id", $userId))
|
||||||
->where(new Compare("GroupNotification.seen", false))
|
->where(new Compare("GroupNotification.seen", false))
|
||||||
|
->orderBy("created_at")->descending()
|
||||||
->execute();
|
->execute();
|
||||||
|
|
||||||
$this->success = ($res !== FALSE);
|
$this->success = ($res !== FALSE);
|
||||||
|
@ -18,10 +18,6 @@ use \Driver\SQL\Strategy\SetDefaultStrategy;
|
|||||||
use \Driver\SQL\Strategy\SetNullStrategy;
|
use \Driver\SQL\Strategy\SetNullStrategy;
|
||||||
use \Driver\SQL\Strategy\UpdateStrategy;
|
use \Driver\SQL\Strategy\UpdateStrategy;
|
||||||
|
|
||||||
use \Driver\SQL\Constraint\Unique;
|
|
||||||
use \Driver\SQL\Constraint\PrimaryKey;
|
|
||||||
use \Driver\SQL\Constraint\ForeignKey;
|
|
||||||
|
|
||||||
class MySQL extends SQL {
|
class MySQL extends SQL {
|
||||||
|
|
||||||
public function __construct($connectionData) {
|
public function __construct($connectionData) {
|
||||||
@ -222,88 +218,8 @@ class MySQL extends SQL {
|
|||||||
return $success;
|
return $success;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function executeSelect($select) {
|
|
||||||
|
|
||||||
$columns = $this->columnName($select->getColumns());
|
|
||||||
$tables = $select->getTables();
|
|
||||||
$params = array();
|
|
||||||
|
|
||||||
if (is_null($tables) || empty($tables)) {
|
|
||||||
return "SELECT $columns";
|
|
||||||
} else {
|
|
||||||
$tables = $this->tableName($tables);
|
|
||||||
}
|
|
||||||
|
|
||||||
$conditions = $select->getConditions();
|
|
||||||
if (!empty($conditions)) {
|
|
||||||
$condition = " WHERE " . $this->buildCondition($conditions, $params);
|
|
||||||
} else {
|
|
||||||
$condition = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
$joinStr = "";
|
|
||||||
$joins = $select->getJoins();
|
|
||||||
if (!empty($joins)) {
|
|
||||||
$joinStr = "";
|
|
||||||
foreach($joins as $join) {
|
|
||||||
$type = $join->getType();
|
|
||||||
$joinTable = $this->tableName($join->getTable());
|
|
||||||
$columnA = $this->columnName($join->getColumnA());
|
|
||||||
$columnB = $this->columnName($join->getColumnB());
|
|
||||||
$joinStr .= " $type JOIN $joinTable ON $columnA=$columnB";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$orderBy = "";
|
|
||||||
$limit = "";
|
|
||||||
$offset = "";
|
|
||||||
|
|
||||||
$query = "SELECT $columns FROM $tables$joinStr$condition$orderBy$limit$offset";
|
|
||||||
return $this->execute($query, $params, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function executeDelete($delete) {
|
|
||||||
|
|
||||||
$table = $delete->getTable();
|
|
||||||
$conditions = $delete->getConditions();
|
|
||||||
if (!empty($conditions)) {
|
|
||||||
$condition = " WHERE " . $this->buildCondition($conditions, $params);
|
|
||||||
} else {
|
|
||||||
$condition = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
$query = "DELETE FROM $table$condition";
|
|
||||||
return $this->execute($query);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function executeTruncate($truncate) {
|
|
||||||
return $this->execute("TRUNCATE " . $truncate->getTable());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function executeUpdate($update) {
|
|
||||||
|
|
||||||
$params = array();
|
|
||||||
$table = $update->getTable();
|
|
||||||
|
|
||||||
$valueStr = array();
|
|
||||||
foreach($update->getValues() as $key => $val) {
|
|
||||||
$valueStr[] = "$key=" . $this->addValue($val, $params);
|
|
||||||
}
|
|
||||||
$valueStr = implode(",", $valueStr);
|
|
||||||
|
|
||||||
$conditions = $update->getConditions();
|
|
||||||
if (!empty($conditions)) {
|
|
||||||
$condition = " WHERE " . $this->buildCondition($conditions, $params);
|
|
||||||
} else {
|
|
||||||
$condition = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
$query = "UPDATE $table SET $valueStr$condition";
|
|
||||||
return $this->execute($query, $params);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getColumnDefinition($column) {
|
public function getColumnDefinition($column) {
|
||||||
$columnName = $column->getName();
|
$columnName = $this->columnName($column->getName());
|
||||||
$defaultValue = $column->getDefaultValue();
|
$defaultValue = $column->getDefaultValue();
|
||||||
|
|
||||||
if ($column instanceof StringColumn) {
|
if ($column instanceof StringColumn) {
|
||||||
@ -344,35 +260,9 @@ class MySQL extends SQL {
|
|||||||
$defaultValue = "";
|
$defaultValue = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
return "`$columnName` $type$notNull$defaultValue";
|
return "$columnName $type$notNull$defaultValue";
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getConstraintDefinition($constraint) {
|
|
||||||
$columnName = $constraint->getColumnName();
|
|
||||||
if ($constraint instanceof PrimaryKey) {
|
|
||||||
if (is_array($columnName)) $columnName = implode('`,`', $columnName);
|
|
||||||
return "PRIMARY KEY (`$columnName`)";
|
|
||||||
} else if ($constraint instanceof Unique) {
|
|
||||||
if (is_array($columnName)) $columnName = implode('`,`', $columnName);
|
|
||||||
return "UNIQUE (`$columnName`)";
|
|
||||||
} else if ($constraint instanceof ForeignKey) {
|
|
||||||
$refTable = $constraint->getReferencedTable();
|
|
||||||
$refColumn = $constraint->getReferencedColumn();
|
|
||||||
$strategy = $constraint->onDelete();
|
|
||||||
$code = "FOREIGN KEY (`$columnName`) REFERENCES `$refTable` (`$refColumn`)";
|
|
||||||
if ($strategy instanceof SetDefaultStrategy) {
|
|
||||||
$code .= " ON DELETE SET DEFAULT";
|
|
||||||
} else if($strategy instanceof SetNullStrategy) {
|
|
||||||
$code .= " ON DELETE SET NULL";
|
|
||||||
} else if($strategy instanceof CascadeStrategy) {
|
|
||||||
$code .= " ON DELETE CASCADE";
|
|
||||||
}
|
|
||||||
|
|
||||||
return $code;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: check this please..
|
|
||||||
public function getValueDefinition($value) {
|
public function getValueDefinition($value) {
|
||||||
if (is_numeric($value)) {
|
if (is_numeric($value)) {
|
||||||
return $value;
|
return $value;
|
||||||
|
@ -18,10 +18,6 @@ use \Driver\SQL\Strategy\SetDefaultStrategy;
|
|||||||
use \Driver\SQL\Strategy\SetNullStrategy;
|
use \Driver\SQL\Strategy\SetNullStrategy;
|
||||||
use \Driver\SQL\Strategy\UpdateStrategy;
|
use \Driver\SQL\Strategy\UpdateStrategy;
|
||||||
|
|
||||||
use \Driver\SQL\Constraint\Unique;
|
|
||||||
use \Driver\SQL\Constraint\PrimaryKey;
|
|
||||||
use \Driver\SQL\Constraint\ForeignKey;
|
|
||||||
|
|
||||||
class PostgreSQL extends SQL {
|
class PostgreSQL extends SQL {
|
||||||
|
|
||||||
public function __construct($connectionData) {
|
public function __construct($connectionData) {
|
||||||
@ -203,85 +199,6 @@ class PostgreSQL extends SQL {
|
|||||||
return $success;
|
return $success;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function executeSelect($select) {
|
|
||||||
|
|
||||||
$columns = $this->columnName($select->getColumns());
|
|
||||||
$tables = $select->getTables();
|
|
||||||
$params = array();
|
|
||||||
|
|
||||||
if (is_null($tables) || empty($tables)) {
|
|
||||||
return "SELECT $columns";
|
|
||||||
} else {
|
|
||||||
$tableStr = $this->tableName($tables);
|
|
||||||
}
|
|
||||||
|
|
||||||
$conditions = $select->getConditions();
|
|
||||||
if (!empty($conditions)) {
|
|
||||||
$condition = " WHERE " . $this->buildCondition($conditions, $params);
|
|
||||||
} else {
|
|
||||||
$condition = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
$joinStr = "";
|
|
||||||
$joins = $select->getJoins();
|
|
||||||
if (!empty($joins)) {
|
|
||||||
$joinStr = "";
|
|
||||||
foreach($joins as $join) {
|
|
||||||
$type = $join->getType();
|
|
||||||
$joinTable = $this->tableName($join->getTable());
|
|
||||||
$columnA = $this->columnName($join->getColumnA());
|
|
||||||
$columnB = $this->columnName($join->getColumnB());
|
|
||||||
$joinStr .= " $type JOIN $joinTable ON $columnA=$columnB";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$orderBy = "";
|
|
||||||
$limit = "";
|
|
||||||
$offset = "";
|
|
||||||
|
|
||||||
$query = "SELECT $columns FROM $tableStr$joinStr$condition$orderBy$limit$offset";
|
|
||||||
return $this->execute($query, $params, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function executeDelete($delete) {
|
|
||||||
$table = $delete->getTable();
|
|
||||||
$conditions = $delete->getConditions();
|
|
||||||
if (!empty($conditions)) {
|
|
||||||
$condition = " WHERE " . $this->buildCondition($conditions, $params);
|
|
||||||
} else {
|
|
||||||
$condition = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
$query = "DELETE FROM \"$table\"$condition";
|
|
||||||
return $this->execute($query);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function executeTruncate($truncate) {
|
|
||||||
$table = $truncate->getTable();
|
|
||||||
return $this->execute("TRUNCATE \"$table\"");
|
|
||||||
}
|
|
||||||
|
|
||||||
public function executeUpdate($update) {
|
|
||||||
$params = array();
|
|
||||||
$table = $update->getTable();
|
|
||||||
|
|
||||||
$valueStr = array();
|
|
||||||
foreach($update->getValues() as $key => $val) {
|
|
||||||
$valueStr[] = "$key=" . $this->addValue($val, $params);
|
|
||||||
}
|
|
||||||
$valueStr = implode(",", $valueStr);
|
|
||||||
|
|
||||||
$conditions = $update->getConditions();
|
|
||||||
if (!empty($conditions)) {
|
|
||||||
$condition = " WHERE " . $this->buildCondition($conditions, $params);
|
|
||||||
} else {
|
|
||||||
$condition = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
$query = "UPDATE \"$table\" SET $valueStr$condition";
|
|
||||||
return $this->execute($query, $params);
|
|
||||||
}
|
|
||||||
|
|
||||||
// UGLY but.. what should i do?
|
// UGLY but.. what should i do?
|
||||||
private function createEnum($enumColumn) {
|
private function createEnum($enumColumn) {
|
||||||
$typeName = $enumColumn->getName();
|
$typeName = $enumColumn->getName();
|
||||||
@ -342,29 +259,6 @@ class PostgreSQL extends SQL {
|
|||||||
return "$columnName $type$notNull$defaultValue";
|
return "$columnName $type$notNull$defaultValue";
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getConstraintDefinition($constraint) {
|
|
||||||
$columnName = $this->columnName($constraint->getColumnName());
|
|
||||||
if ($constraint instanceof PrimaryKey) {
|
|
||||||
return "PRIMARY KEY ($columnName)";
|
|
||||||
} else if ($constraint instanceof Unique) {
|
|
||||||
return "UNIQUE ($columnName)";
|
|
||||||
} else if ($constraint instanceof ForeignKey) {
|
|
||||||
$refTable = $this->tableName($constraint->getReferencedTable());
|
|
||||||
$refColumn = $this->columnName($constraint->getReferencedColumn());
|
|
||||||
$strategy = $constraint->onDelete();
|
|
||||||
$code = "FOREIGN KEY ($columnName) REFERENCES $refTable ($refColumn)";
|
|
||||||
if ($strategy instanceof SetDefaultStrategy) {
|
|
||||||
$code .= " ON DELETE SET DEFAULT";
|
|
||||||
} else if($strategy instanceof SetNullStrategy) {
|
|
||||||
$code .= " ON DELETE SET NULL";
|
|
||||||
} else if($strategy instanceof CascadeStrategy) {
|
|
||||||
$code .= " ON DELETE CASCADE";
|
|
||||||
}
|
|
||||||
|
|
||||||
return $code;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function getValueDefinition($value) {
|
protected function getValueDefinition($value) {
|
||||||
if (is_numeric($value)) {
|
if (is_numeric($value)) {
|
||||||
return $value;
|
return $value;
|
||||||
|
@ -8,6 +8,10 @@ class Select extends Query {
|
|||||||
private $tables;
|
private $tables;
|
||||||
private $conditions;
|
private $conditions;
|
||||||
private $joins;
|
private $joins;
|
||||||
|
private $orderColumns;
|
||||||
|
private $sortAscending;
|
||||||
|
private $limit;
|
||||||
|
private $offset;
|
||||||
|
|
||||||
public function __construct($sql, ...$columns) {
|
public function __construct($sql, ...$columns) {
|
||||||
parent::__construct($sql);
|
parent::__construct($sql);
|
||||||
@ -15,6 +19,10 @@ class Select extends Query {
|
|||||||
$this->tables = array();
|
$this->tables = array();
|
||||||
$this->conditions = array();
|
$this->conditions = array();
|
||||||
$this->joins = array();
|
$this->joins = array();
|
||||||
|
$this->orderColumns = array();
|
||||||
|
$this->limit = 0;
|
||||||
|
$this->offset = 0;
|
||||||
|
$this->sortAscending = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function from(...$tables) {
|
public function from(...$tables) {
|
||||||
@ -37,6 +45,31 @@ class Select extends Query {
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function orderBy(...$columns) {
|
||||||
|
$this->orderColumns = $columns;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function ascending() {
|
||||||
|
$this->ascending = true;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function descending() {
|
||||||
|
$this->ascending = false;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function limit($limit) {
|
||||||
|
$this->limit = $limit;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function offset($offset) {
|
||||||
|
$this->offset = $offset;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
public function execute() {
|
public function execute() {
|
||||||
return $this->sql->executeSelect($this);
|
return $this->sql->executeSelect($this);
|
||||||
}
|
}
|
||||||
@ -45,6 +78,11 @@ class Select extends Query {
|
|||||||
public function getTables() { return $this->tables; }
|
public function getTables() { return $this->tables; }
|
||||||
public function getConditions() { return $this->conditions; }
|
public function getConditions() { return $this->conditions; }
|
||||||
public function getJoins() { return $this->joins; }
|
public function getJoins() { return $this->joins; }
|
||||||
|
public function isOrderedAscending() { return $this->ascending; }
|
||||||
|
public function getOrderBy() { return $this->orderColumns; }
|
||||||
|
public function getLimit() { return $this->limit; }
|
||||||
|
public function getOffset() { return $this->offset; }
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
@ -2,6 +2,10 @@
|
|||||||
|
|
||||||
namespace Driver\SQL;
|
namespace Driver\SQL;
|
||||||
|
|
||||||
|
use \Driver\SQL\Constraint\Unique;
|
||||||
|
use \Driver\SQL\Constraint\PrimaryKey;
|
||||||
|
use \Driver\SQL\Constraint\ForeignKey;
|
||||||
|
|
||||||
abstract class SQL {
|
abstract class SQL {
|
||||||
|
|
||||||
protected $lastError;
|
protected $lastError;
|
||||||
@ -11,7 +15,7 @@ abstract class SQL {
|
|||||||
|
|
||||||
public function __construct($connectionData) {
|
public function __construct($connectionData) {
|
||||||
$this->connection = NULL;
|
$this->connection = NULL;
|
||||||
$this->lastError = 'Not connected';
|
$this->lastError = 'Unknown Error';
|
||||||
$this->connectionData = $connectionData;
|
$this->connectionData = $connectionData;
|
||||||
$this->lastInsertId = 0;
|
$this->lastInsertId = 0;
|
||||||
}
|
}
|
||||||
@ -60,8 +64,6 @@ abstract class SQL {
|
|||||||
public abstract function connect();
|
public abstract function connect();
|
||||||
public abstract function disconnect();
|
public abstract function disconnect();
|
||||||
|
|
||||||
// TODO: pull code duplicates up
|
|
||||||
|
|
||||||
// Querybuilder
|
// Querybuilder
|
||||||
public function executeCreateTable($createTable) {
|
public function executeCreateTable($createTable) {
|
||||||
$tableName = $this->tableName($createTable->getTableName());
|
$tableName = $this->tableName($createTable->getTableName());
|
||||||
@ -87,13 +89,111 @@ abstract class SQL {
|
|||||||
return $this->execute($query);
|
return $this->execute($query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO pull this function up
|
||||||
public abstract function executeInsert($query);
|
public abstract function executeInsert($query);
|
||||||
public abstract function executeSelect($query);
|
|
||||||
public abstract function executeDelete($query);
|
public function executeSelect($select) {
|
||||||
public abstract function executeTruncate($query);
|
|
||||||
public abstract function executeUpdate($query);
|
$columns = $this->columnName($select->getColumns());
|
||||||
|
$tables = $select->getTables();
|
||||||
|
$params = array();
|
||||||
|
|
||||||
|
if (!$tables) {
|
||||||
|
return "SELECT $columns";
|
||||||
|
}
|
||||||
|
|
||||||
|
$tables = $this->tableName($tables);
|
||||||
|
$where = $this->getWhereClause($select->getConditions(), $params);
|
||||||
|
|
||||||
|
$joinStr = "";
|
||||||
|
$joins = $select->getJoins();
|
||||||
|
if (!empty($joins)) {
|
||||||
|
foreach($joins as $join) {
|
||||||
|
$type = $join->getType();
|
||||||
|
$joinTable = $this->tableName($join->getTable());
|
||||||
|
$columnA = $this->columnName($join->getColumnA());
|
||||||
|
$columnB = $this->columnName($join->getColumnB());
|
||||||
|
$joinStr .= " $type JOIN $joinTable ON $columnA=$columnB";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$orderBy = "";
|
||||||
|
$orderColumns = $select->getOrderBy();
|
||||||
|
if (!empty($orderColumns)) {
|
||||||
|
$orderBy = " ORDER BY " . $this->columnName($orderColumns);
|
||||||
|
$orderBy .= ($select->isOrderedAscending() ? " ASC" : " DESC");
|
||||||
|
}
|
||||||
|
|
||||||
|
$limit = ($select->getLimit() > 0 ? (" LIMIT " . $select->getLimit()) : "");
|
||||||
|
$offset = ($select->getOffset() > 0 ? (" OFFSET " . $select->getOffset()) : "");
|
||||||
|
$query = "SELECT $columns FROM $tables$joinStr$where$orderBy$limit$offset";
|
||||||
|
return $this->execute($query, $params, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function executeDelete($delete) {
|
||||||
|
|
||||||
|
$table = $this->tableName($delete->getTable());
|
||||||
|
$where = $this->getWhereClause($delete->getConditions(), $params);
|
||||||
|
|
||||||
|
$query = "DELETE FROM $table$where";
|
||||||
|
return $this->execute($query);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function executeTruncate($truncate) {
|
||||||
|
return $this->execute("TRUNCATE " . $truncate->getTable());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function executeUpdate($update) {
|
||||||
|
|
||||||
|
$params = array();
|
||||||
|
$table = $this->tableName($update->getTable());
|
||||||
|
|
||||||
|
$valueStr = array();
|
||||||
|
foreach($update->getValues() as $key => $val) {
|
||||||
|
$valueStr[] = "$key=" . $this->addValue($val, $params);
|
||||||
|
}
|
||||||
|
$valueStr = implode(",", $valueStr);
|
||||||
|
|
||||||
|
$where = $this->getWhereClause($update->getConditions(), $params);
|
||||||
|
$query = "UPDATE $table SET $valueStr$where";
|
||||||
|
return $this->execute($query, $params);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getWhereClause($conditions, &$params) {
|
||||||
|
if (!$conditions) {
|
||||||
|
return "";
|
||||||
|
} else {
|
||||||
|
return " WHERE " . $this->buildCondition($conditions, $params);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract function getColumnDefinition($column);
|
protected abstract function getColumnDefinition($column);
|
||||||
protected abstract function getConstraintDefinition($constraint);
|
|
||||||
|
public function getConstraintDefinition($constraint) {
|
||||||
|
$columnName = $this->columnName($constraint->getColumnName());
|
||||||
|
if ($constraint instanceof PrimaryKey) {
|
||||||
|
return "PRIMARY KEY ($columnName)";
|
||||||
|
} else if ($constraint instanceof Unique) {
|
||||||
|
return "UNIQUE ($columnName)";
|
||||||
|
} else if ($constraint instanceof ForeignKey) {
|
||||||
|
$refTable = $this->tableName($constraint->getReferencedTable());
|
||||||
|
$refColumn = $this->columnName($constraint->getReferencedColumn());
|
||||||
|
$strategy = $constraint->onDelete();
|
||||||
|
$code = "FOREIGN KEY ($columnName) REFERENCES $refTable ($refColumn)";
|
||||||
|
if ($strategy instanceof SetDefaultStrategy) {
|
||||||
|
$code .= " ON DELETE SET DEFAULT";
|
||||||
|
} else if($strategy instanceof SetNullStrategy) {
|
||||||
|
$code .= " ON DELETE SET NULL";
|
||||||
|
} else if($strategy instanceof CascadeStrategy) {
|
||||||
|
$code .= " ON DELETE CASCADE";
|
||||||
|
}
|
||||||
|
|
||||||
|
return $code;
|
||||||
|
} else {
|
||||||
|
$this->lastError = "Unsupported constraint type: " . get_class($strategy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract function getValueDefinition($val);
|
protected abstract function getValueDefinition($val);
|
||||||
protected abstract function addValue($val, &$params);
|
protected abstract function addValue($val, &$params);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user