64 lines
2.1 KiB
PHP
64 lines
2.1 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): 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;
|
|
}
|
|
} |