Db API
Module: Db
Namespace root: DafDb
DbContext
DafDb\Context\DbContext | DafPhpFramwork/DafDb/Context/DbContext.php
Summary: base app context that initializes DbSet properties and delegates commit to provider context.
__construct(Context $context)ModelSnapshot(SnapshotBuilder $builder): SnapshotBuilder|nullgetModelSnapshot(): arraySaveChanges(): void
Context (Provider Base)
DafDb\Context\Context | DafPhpFramwork/DafDb/Context/Context.php
Table(string $dbSetClassName): DbSetGetStatement(): PDOStatement,GetConnection(): PDOTracker(): ChangeTracker,GetSqlProvider(): IProviderSqlGetDbType(): string(abstract),IsDbType(string $dbType): boolSaveChanges(): int,Execute(SqlCommand $cmd): PDOStatementBigTransaction(callable $callback): void
Provider Implementations
SqliteContext::__construct(string $database),GetDbType(): stringMysqlContext::__construct(string $database, string $username, string $password, string $host = "127.0.0.1", int $port = 3306, $charset = "utf8mb4")
DbSet
DafDb\Query\DbSet | DafPhpFramwork/DafDb/Query/DbSet.php
__construct(Context $context)GetTableInfo(): TableInfo,Execute(SqlCommand $cmd): PDOStatement,GetLastInsertedId(): bool|stringAdd(object|array $data): objectUpdate(object|array $data, callable $func = null): voidRemove(callable|array|object $objOrfunc),Clear(): void
Queryable (Fluent Query API)
DafDb\Query\Queryable | DafPhpFramwork/DafDb/Query/Queryable.php
FirstOrDefault,SingleOrDefault,Where,OrderBy,OrderByDescendingSkip,Take,Any,Count,Map,ForEachInclude,ThenInclude,RowToArray,ToArray,ToCollection- Protected fetch pipeline:
Fetch,FetchAll
Migrations
Migrations::Migrate(DbContext $dbContext, string $appFolder)Migrations::Rollback(DbContext $dbContext, string $appFolder)Migrations::Generate(DbContext $dbContext, string $migrationName, string $appFolder)Migrationabstract hooks:Up(MigrationBuilder $migrationBuilder),Down(MigrationBuilder $migrationBuilder)MigrationBuilder:CreateTable,DropTable,AlterTable,Sql,GetChanges
Usage Example
PHP
<?php
$users = $context->Users
->Where(fn($u) => $u->IsActive)
->OrderBy(fn($u) => $u->LastName)
->Take(50)
->ToArray();
$context->Users->Add(new UserModel(["Name" => "Doron"]));
$context->SaveChanges();