2025-08-07 21:40:01 +03:00

64 lines
2.2 KiB
PHP

<?php
/**
* @noinspection SqlNoDataSourceInspection
*/
namespace goodboyalex\php_db_components_pack\traits\Database;
use goodboyalex\php_db_components_pack\classes\ConditionBuilder;
use PDO;
/**
* Трейт для удаления записей в таблице базы данных.
*
* @author Александр Бабаев
* @package php_db_components_pack
* @version 1.0
* @since 1.0
* @see PDO
*/
trait DatabaseDelete
{
/**
* Удаляет строки по условию.
*
* @param string $table Имя таблицы.
* @param ConditionBuilder $where Массив условий.
*
* @return bool Результат выполнения.
*/
public function Delete (string $table, ConditionBuilder $where = new ConditionBuilder()): bool
{
/**
* Получаю SQL-запрос и параметры для where.
*
* @var string $sql_where SQL-запрос для where.
* @var array $params Параметры запроса.
*/
[$sql_where, $params] = $where->Build();
// Создаю запрос
$sql = "DELETE FROM $this->DBSignOpen$table$this->DBSignClose";
// Если заданы where-параметры
if ($where->Count() > 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;
}
}