Skip to content

Commit dbb0c29

Browse files
authored
Merge pull request #15 from blitz-php/1.x-devs
feat: ajout de méthodes pour récupérer des valeurs spécifiques et plusieurs valeurs, avec gestion du cache des colonnes sélectionnées
2 parents 0738e3b + 7afeeb8 commit dbb0c29

4 files changed

Lines changed: 573 additions & 52 deletions

File tree

src/Builder/BaseBuilder.php

Lines changed: 8 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -380,10 +380,14 @@ public function select($columns = '*'): static
380380

381381
/**
382382
* Sélectionne avec un alias explicite
383+
*
384+
* @param Expression|string $column Colonnes à sélectionner
383385
*/
384-
public function selectAs(string $column, string $alias): static
386+
public function selectAs($column, string $alias): static
385387
{
386-
$this->columns[] = $this->buildColumnName($column) . ' AS ' . $this->db->escapeIdentifiers($alias);
388+
$column = $column instanceof Expression ? $column : $this->buildColumnName($column);
389+
390+
$this->columns[] = $column . ' AS ' . $this->db->escapeIdentifiers($alias);
387391

388392
return $this->asCrud('select');
389393
}
@@ -946,53 +950,6 @@ public function row(int $index, $type = PDO::FETCH_OBJ): mixed
946950
return $this->execute()->row($index, $type);
947951
}
948952

949-
/**
950-
* Récupère une valeur spécifique
951-
*
952-
* @return list<mixed>|mixed
953-
*/
954-
public function value(array|string $name)
955-
{
956-
$names = (array) $name;
957-
$values = [];
958-
959-
$row = $this->select($names)->first(PDO::FETCH_OBJ);
960-
961-
foreach ($names as $v) {
962-
if (is_string($v)) {
963-
$values[] = $row->{$v} ?? null;
964-
}
965-
}
966-
967-
return is_string($name) ? $values[0] : $values;
968-
}
969-
970-
/**
971-
* Récupère plusieurs valeurs
972-
*
973-
* @return list<mixed>
974-
*/
975-
public function values(array|string $name): array
976-
{
977-
$names = (array) $name;
978-
$columns = [];
979-
980-
$rows = $this->select($names)->all(PDO::FETCH_OBJ);
981-
982-
foreach ($rows as $row) {
983-
$values = [];
984-
985-
foreach ($names as $v) {
986-
if (is_string($v)) {
987-
$values[$v] = $row->{$v} ?? null;
988-
}
989-
}
990-
$columns[] = is_string($name) ? ($values[$name] ?? null) : $values;
991-
}
992-
993-
return $columns;
994-
}
995-
996953
/**
997954
* Vérifie si des enregistrements existent
998955
*/
@@ -1305,6 +1262,8 @@ public function reset(): static
13051262
$this->lock = null;
13061263
$this->uniqueBy = [];
13071264
$this->updateColumns = [];
1265+
1266+
$this->clearSelectedColumnsCache();
13081267
$this->db->setAliasedTables([]);
13091268

13101269
return $this->asCrud('select');

0 commit comments

Comments
 (0)