Save 29042026
CI Tests / test (push) Has been cancelled

This commit is contained in:
Dmitry Rashupkin
2026-04-29 15:22:30 +03:00
parent 22c6dbc6d8
commit 14345b2622
2 changed files with 35 additions and 4 deletions
+1
View File
@@ -1,3 +1,4 @@
vendor
composer.lock
.idea
.history
+32 -2
View File
@@ -78,7 +78,12 @@ class Builder extends BaseBuilder
$statement = $this->client->select($query, $bindings);
// ✅ Исправление: resolveConnection() отсутствует в этом пакете.
// Обёртка предотвращает падение, если метод когда-нибудь добавят или уберут
if (method_exists($this, 'resolveConnection')) {
$this->resolveConnection()->logQuery($query, $bindings, $this->getElapsedTime($start));
}
return $statement;
}
@@ -118,7 +123,33 @@ class Builder extends BaseBuilder
return $this;
}
/**
* Добавляет сырое SQL-выражение в SELECT без автоматического экранирования ``.
* Необходимо для агрегатных функций: count(), avg(), uniq(), toStartOfDay() и т.д.
*/
public function selectRaw(string $expression, array $bindings = []): self
{
// Expression сообщает Grammar'у: "не трогай эту строку кавычками"
return $this->select(new Expression($expression));
}
/**
* Получает первую строку результата как ассоциативный массив или null.
* Аналог Eloquent::first()
*/
public function first(): ?array
{
$rows = $this->limit(1)->getRows();
return $rows[0] ?? null;
}
/**
* Получает значение одного поля из первой строки.
* Аналог Eloquent::value()
*/
public function value(string $column)
{
$row = $this->select([$column])->first();
return $row[$column] ?? null;
}
/**
* Note! This is a heavy operation not designed for frequent use.
* @return Statement
@@ -231,5 +262,4 @@ class Builder extends BaseBuilder
],
);
}
}