1 Commits
1.0.5 ... 1.0.6

Author SHA1 Message Date
Gregory Letellier
d961d2a80f ajout model de type readonly pour une requête de select uniquement 2024-06-18 13:02:18 +02:00

View File

@@ -12,21 +12,31 @@ class Model implements JsonSerializable
protected string $connection = "";
protected string $pk;
private bool $new;
private bool $ro;
public function __construct()
public function __construct($ro = false)
{
$this->new = true;
$this->values = array();
$this->updated = array();
$this->pk = "id";
$this->ro = $ro;
$this->initTable();
}
private function initTable(): void
{
if ($this->table == "") {
$this->table = $this->getDefaultTableName();
if(!$this->ro)
{
if ($this->table == "") {
$this->table = $this->getDefaultTableName();
}
}
else
{
$this->table = "ReadOnlyModel";
$this->pk = "__idpk";
}
}
public function getTable(): string
@@ -89,31 +99,34 @@ class Model implements JsonSerializable
public function save(): bool
{
$ret = false;
$qb = $this->newQueryBuilder();
if ($this->new) {
$query = $qb->getPreparedQuery($this->values);
$id = Connection::getInstance($this->connection)->insertQuery($query);
if ($id !== false) {
$this->values[$this->pk] = $id;
$this->new = false;
$ret = true;
}
} else {
if (isset($this->values[$this->pk])) {
if (count($this->updated) > 0) {
$data = [];
$data[$this->pk] = $this->values[$this->pk];
foreach ($this->updated as $updatecol) {
$data[$updatecol] = $this->values[$updatecol];
}
$query = $qb->getPreparedQuery($data, false);
$ret = Connection::getInstance($this->connection)->updateQuery($query);
if ($ret) {
$this->updated = [];
if(!$this->ro)
{
$qb = $this->newQueryBuilder();
if ($this->new) {
$query = $qb->getPreparedQuery($this->values);
$id = Connection::getInstance($this->connection)->insertQuery($query);
if ($id !== false) {
$this->values[$this->pk] = $id;
$this->new = false;
$ret = true;
}
} else {
if (isset($this->values[$this->pk])) {
if (count($this->updated) > 0) {
$data = [];
$data[$this->pk] = $this->values[$this->pk];
foreach ($this->updated as $updatecol) {
$data[$updatecol] = $this->values[$updatecol];
}
$query = $qb->getPreparedQuery($data, false);
$ret = Connection::getInstance($this->connection)->updateQuery($query);
if ($ret) {
$this->updated = [];
}
}
}
}
}
}
return $ret;
}