pagination: joins

This commit is contained in:
2023-01-09 14:21:11 +01:00
parent d115d8b970
commit 6dcd7031bb
14 changed files with 424 additions and 69 deletions

View File

@@ -161,10 +161,9 @@ abstract class DatabaseEntity implements ArrayAccess, JsonSerializable {
}
}
// TODO: rather take property names here instead of $columns? and translate then using DatabaseEntityHandler::columns[$propertyName]
public function save(SQL $sql, ?array $columns = null, bool $saveNM = false): bool {
public function save(SQL $sql, ?array $properties = null, bool $saveNM = false): bool {
$handler = self::getHandler($sql);
$res = $handler->insertOrUpdate($this, $columns, $saveNM);
$res = $handler->insertOrUpdate($this, $properties, $saveNM);
if ($res === false) {
return false;
} else if ($this->id === null) {
@@ -233,7 +232,7 @@ abstract class DatabaseEntity implements ArrayAccess, JsonSerializable {
return $this->id;
}
public static function count(SQL $sql, ?Condition $condition = null): int|bool {
public static function count(SQL $sql, ?Condition $condition = null, ?array $joins = []): int|bool {
$handler = self::getHandler($sql);
$query = $sql->select(new Count())
->from($handler->getTableName());
@@ -242,6 +241,12 @@ abstract class DatabaseEntity implements ArrayAccess, JsonSerializable {
$query->where($condition);
}
if ($joins) {
foreach ($joins as $join) {
$query->addJoin($join);
}
}
$res = $query->execute();
if (!empty($res)) {