20250802-1
This commit is contained in:
92
sources/classes/DBItemProperty.php
Normal file
92
sources/classes/DBItemProperty.php
Normal file
@@ -0,0 +1,92 @@
|
||||
<?php
|
||||
|
||||
namespace goodboyalex\php_db_components_pack\classes;
|
||||
|
||||
use Closure;
|
||||
use goodboyalex\php_components_pack\extensions\StringExtension;
|
||||
|
||||
/**
|
||||
* Класс свойства класса, реализующего интерфейс IDBItem.
|
||||
*
|
||||
* @author Александр Бабаев
|
||||
* @package php_db_components_pack
|
||||
* @version 1.0
|
||||
* @since 1.0
|
||||
*/
|
||||
final class DBItemProperty
|
||||
{
|
||||
/**
|
||||
* @var string $Name Имя свойства.
|
||||
*/
|
||||
public string $Name;
|
||||
|
||||
/**
|
||||
* @var mixed $Value Значение свойства (ещё не конвертированное!).
|
||||
*/
|
||||
public mixed $Value;
|
||||
|
||||
/**
|
||||
* @var string $FieldName Имя поля в таблице БД.
|
||||
*/
|
||||
public string $FieldName;
|
||||
|
||||
/**
|
||||
* @var bool $IsPrimaryKey Признак того, что свойство является первичным ключом.
|
||||
*/
|
||||
public bool $IsPrimaryKey;
|
||||
|
||||
/**
|
||||
* @var bool $IsIgnored Признак того, что свойство игнорируется при сохранении в / загрузке из БД.
|
||||
*/
|
||||
public bool $IsIgnored;
|
||||
|
||||
/**
|
||||
* @var Closure $ConvertToDB Конвертер значения свойства в значение поля БД.
|
||||
*/
|
||||
public Closure $ConvertToDB;
|
||||
|
||||
/**
|
||||
* @var Closure $ConvertFromDB Конвертер значения поля БД в значение свойства.
|
||||
*/
|
||||
public Closure $ConvertFromDB;
|
||||
|
||||
/**
|
||||
* @var Closure $Compare Функция сравнения значений свойства.
|
||||
*/
|
||||
public Closure $Compare;
|
||||
|
||||
/**
|
||||
* Конструктор.
|
||||
*
|
||||
* @param string $name Имя свойства.
|
||||
* @param mixed|null $value Значение свойства (ещё не конвертированное!).
|
||||
* @param string $fieldName Имя поля в таблице БД.
|
||||
* @param bool $isPrimaryKey Признак того, что свойство является первичным ключом.
|
||||
* @param bool $isIgnored Признак того, что свойство игнорируется при сохранении в / загрузке из БД.
|
||||
* @param callable|null $ConvertToDB Конвертер значения свойства в значение поля БД.
|
||||
* @param Closure|null $ConvertFromDB Конвертер значения поля БД в значение свойства.
|
||||
* @param Closure|null $Compare Функция сравнения значений свойства.
|
||||
*/
|
||||
public function __construct (string $name = '', mixed $value = null, string $fieldName = '',
|
||||
bool $isPrimaryKey = false, bool $isIgnored = false, ?callable $ConvertToDB = null,
|
||||
?Closure $ConvertFromDB = null, ?Closure $Compare = null)
|
||||
{
|
||||
// Установка значений
|
||||
// - установка имени свойства
|
||||
$this->Name = $name;
|
||||
// - установка значения свойства (ещё не конвертированного)
|
||||
$this->Value = $value;
|
||||
// - установка имени поля в таблице БД
|
||||
$this->FieldName = StringExtension::IsNullOrWhitespace($fieldName) ? $name : $fieldName;
|
||||
// - установка признака того, что свойство является первичным ключом
|
||||
$this->IsPrimaryKey = $isPrimaryKey;
|
||||
// - установка признака того, что свойство игнорируется при сохранении в / загрузке из БД
|
||||
$this->IsIgnored = $isIgnored;
|
||||
// - установка конвертеров значения свойства в значение поля БД
|
||||
$this->ConvertToDB = $ConvertToDB ?? fn (mixed $value): mixed => $value;
|
||||
// - установка конвертеров значения поля БД в значение свойства
|
||||
$this->ConvertFromDB = $ConvertFromDB ?? fn (mixed $value): mixed => $value;
|
||||
// - установка функции сравнения значений свойства
|
||||
$this->Compare = $Compare ?? fn (mixed $value1, mixed $value2): bool => $value1 == $value2;
|
||||
}
|
||||
}
|
@@ -10,6 +10,7 @@
|
||||
use goodboyalex\php_db_components_pack\enums\DBDriver;
|
||||
use goodboyalex\php_db_components_pack\models\DBConfig;
|
||||
use goodboyalex\php_db_components_pack\traits\Database\DatabaseCountExist;
|
||||
use goodboyalex\php_db_components_pack\traits\Database\DatabaseDelete;
|
||||
use goodboyalex\php_db_components_pack\traits\Database\DatabaseGet;
|
||||
use goodboyalex\php_db_components_pack\traits\Database\DatabaseInsert;
|
||||
use goodboyalex\php_db_components_pack\traits\Database\DatabaseQueryExecute;
|
||||
@@ -150,48 +151,9 @@
|
||||
// Обновление записей
|
||||
use DatabaseUpdate;
|
||||
|
||||
// Удаление записей
|
||||
use DatabaseDelete;
|
||||
|
||||
// Приватные методы
|
||||
use DatabaseSpecial;
|
||||
|
||||
/**
|
||||
* Удаляет строки по условию.
|
||||
*
|
||||
* @param string $table Имя таблицы
|
||||
* @param array $where Массив условий
|
||||
*
|
||||
* @return bool Результат выполнения
|
||||
*/
|
||||
public function Delete (string $table, array $where = []): bool
|
||||
{
|
||||
// Обработанные параметры
|
||||
$params = [];
|
||||
|
||||
// Строковая интерпретация массива условий
|
||||
$sql_where = $this->PrepareQueryWhere(where: $where, params: $params);
|
||||
|
||||
// Создаю запрос
|
||||
$sql = "DELETE FROM $this->DBSignOpen$table$this->DBSignClose";
|
||||
|
||||
// Если заданы where-параметры
|
||||
if (count($where) > 0) {
|
||||
// - то добавляю их
|
||||
$sql .= " WHERE $sql_where";
|
||||
}
|
||||
|
||||
// Выполняю запрос
|
||||
$count = $this->Execute($sql, $params);
|
||||
|
||||
// Если результат - false
|
||||
if ($count === false)
|
||||
// - то и общий результат - false
|
||||
return false;
|
||||
|
||||
// Если изменено 0 строк
|
||||
if ($count === 0)
|
||||
// - то и общий результат - false
|
||||
return false;
|
||||
|
||||
// Вывожу результат -- успех
|
||||
return true;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user