20250820 v1.0.2-b2
This commit is contained in:
@@ -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)
|
||||
|
Reference in New Issue
Block a user