false в случае ошибки. */ public function GetRow (string $table, ConditionBuilder $where, array $columns = [], string $className = "\\StdClass"): object|false { // Задаю массив параметров $params = []; // Формируем SQL-запрос $sql = $this->PrepareSQLForRowsQuery($table, $columns, $where, $params); // Добавляю лимит $sql .= " LIMIT 1"; // Получаю строку $row = $this->Query($sql, $params); // Если не получено if ($row === false) // - то вывожу false return false; // Получаю объект $item = $this->RestoreItem($row, $className, DBOperation::Get); // Если при получении возникла ошибка if ($item === null) // - то возвращаю false return false; // Возвращаю элемент return $item; } /** * Получает набор строк в массиве данных, удовлетворяющий выборке. * * @param string $table Имя таблицы. * @param ConditionBuilder $where Where-условия выборки. * @param array $columns Колонки, которые нужно включить в запрос. * @param string $className Полное имя класса, реализуемого интерфейсом IDBItem. * * @return false|ObjectArray Массив найденных классов или false в случае ошибки. */ public function GetRows (string $table, ConditionBuilder $where, array $columns = [], string $className = "\\StdClass"): false|ObjectArray { // Задаю массив параметров $params = []; // Получаю SQL запрос $sql = $this->PrepareSQLForRowsQuery($table, $columns, $where, $params); // Получаю строки на основании запроса $queryResult = $this->Query($sql, $params); // Если строки не получены if ($queryResult === false) // - то выдаю ошибку return false; // Создаю массив объектов $result = new ObjectArray(); // Для каждого элемента foreach ($queryResult as $row) { // - пытаюсь восстановить объект $item = $this->RestoreItem($row, $className, DBOperation::Get); // - если не получилось if ($item === null) // -- то пропускаю элемент continue; // - добавляю элемент в массив $result[] = $item; } // Выдаю массив объектов return $result; } /** * Получает колонку в массиве данных. * * @param string $table Имя таблицы. * @param string $column Имя колонки. * @param ConditionBuilder $where Параметры запроса. * * @return false|array Ассоциированный массив с результатом запроса или false в случае ошибки. * * @see Query */ public function GetCol (string $table, string $column, ConditionBuilder $where): false|array { /** * Интерпретирую условия. * * @var string $sql_where Строка запроса. * @var array $params Массив параметров строки запроса. */ [$sql_where, $params] = $where->Build(); // Создаю запрос $sql = "SELECT $this->DBSignOpen$column$this->DBSignClose FROM $this->DBSignOpen$table$this->DBSignClose"; // Если заданы where-параметры if ($where->Count() > 0) // - то добавляю их $sql .= " WHERE $sql_where"; // Получаю столбец на основании запроса $queryResult = $this->Query($sql, $params); // Если строка не получена или пуста if ($queryResult === false) // - то выдаю ошибку return false; // Создаю результат $result = []; // Для каждого результата запроса foreach ($queryResult as $row) // - передаю его в результат $result[] = $row[$column]; // Вывожу результат return $result; } /** * Получение значение единичного поля. * * @param string $table Имя таблицы. * @param string $column Требуемый столбец. * @param ConditionBuilder $where Параметры запроса. * * @return mixed|null Результат запроса или null в случае ошибки. */ public function GetValue (string $table, string $column, ConditionBuilder $where): mixed { // Получаю колонку по условию из таблицы $result = $this->GetCol($table, $column, $where); // Если результат получен, то выдаю первый элемент, а если нет, то null return $result[0] ?? null; } }