ajout model de type readonly pour une requête de select uniquement
This commit is contained in:
@@ -12,20 +12,30 @@ 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";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,27 +99,30 @@ 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 = [];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user