20250820 v1.0.2-b2

This commit is contained in:
2025-08-20 18:09:37 +03:00
parent cc3b1ef41b
commit 95aa7d9411
22 changed files with 594 additions and 68 deletions

View File

@@ -7,6 +7,7 @@
use Exception;
use goodboyalex\php_db_components_pack\classes\ConditionBuilder;
use goodboyalex\php_db_components_pack\enums\DBDriver;
use goodboyalex\php_db_components_pack\enums\DBOperation;
use goodboyalex\php_db_components_pack\interfaces\IDBItem;
use goodboyalex\php_db_components_pack\models\DBItemProperty;
@@ -33,6 +34,9 @@
*/
public function Update (string $table, IDBItem $item): bool
{
// Получаю знаки открытия параметра и закрытия его
[$signOpen, $signClose] = DBDriver::GetSigns($this->Config->Driver);
// Получаю свойства объекта
$properties = self::GetProperties($item, DBOperation::Update);
@@ -124,14 +128,19 @@
// Для каждого свойства для обновления
foreach ($propertyToSet as $key => $value) {
// - добавляю его в массив set
$set[] = "$this->DBSignOpen$key$this->DBSignClose=:$key";
$set[] = "$key=:$key";//"$signOpen$key$signClose=:$key";
// - добавляю его в массив параметров set для обновления
$set_params[":$key"] = $value;
}
// Строковая интерпретация массива set
$sql_set = count($set) > 0 ? '(' . implode(", ", $set) . ')' : "";
// Если нечего изменять
if (count($set) == 0)
// - то прерываем с успехом
return true;
// Устанавливаю параметры обновления
$sql_set = implode(", ", $set);
/**
* Получаю WHERE-запрос и параметры.
@@ -139,13 +148,16 @@
* @var string $sql_where WHERE-запрос.
* @var array $where_params Параметры WHERE-запроса.
*/
[$sql_where, $where_params] = $where->Build();
[$sql_where, $where_params] = $where->Build($this->Config->Driver);
// Объединяю все параметры в один массив
$params = array_merge($set_params, $where_params);
// Подготавливаю имя таблицы
$table = $this->PrepareTableName($table);
// Создаю запрос
$sql = "UPDATE $this->DBSignOpen$table$this->DBSignClose SET $sql_set";
$sql = "UPDATE $table SET $sql_set";
// Если заданы where-параметры
if ($where->Count() > 0)