Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
19a75a2
feat: add unique on multiple column
abdul-kaioum Feb 16, 2025
d513b15
fix: remove trailing comma
abdul-kaioum Feb 16, 2025
4a4bd17
feat: orderby raw query
abdul-kaioum Feb 16, 2025
d49944e
chore: removed order direction from orderByRaw
abdul-kaioum Feb 17, 2025
92437df
fix: binding is not reseting after executing a query, causes mismatch…
abdul-kaioum Feb 18, 2025
6aae61d
reafctor: querybuilder
abdul-kaioum Feb 20, 2025
1693881
wip: with aggregate function
abdul-kaioum Feb 27, 2025
43fb931
feat: bool cast, withCast
anisurov Feb 28, 2025
ae071ad
fix: update function
anisurov Feb 28, 2025
300b963
feat: relational subselect for aggregate
anisurov Feb 28, 2025
07930df
feat: model event
abdul-kaioum Mar 3, 2025
2ee3099
fix: prepared query is wrong, it is prepareing through wrong method
abdul-kaioum Mar 5, 2025
d54ba7a
fix: raw query result issue
abdul-kaioum Mar 5, 2025
43e4aeb
fix: trim query to match
abdul-kaioum Mar 5, 2025
b550e99
fix: event not triggering
abdul-kaioum Mar 6, 2025
27fd9b0
fix: prevent delete statement if where clause is null to avoid unwant…
abdul-kaioum Mar 6, 2025
4986f02
fix: change condition to check empty string which is not null
abdul-kaioum Mar 6, 2025
8410502
fix: model save event
abdul-kaioum Mar 11, 2025
3092cb3
feat: added some aggregate relation functions
abdul-kaioum Mar 11, 2025
c3eb318
fix: event in loop issue due static prop
abdul-kaioum Mar 12, 2025
c8bff11
fix: reseting select due to count query
abdul-kaioum Mar 12, 2025
ac312e2
feat: added bindings for selectRaw
abdul-kaioum Mar 12, 2025
dc96df5
fix: count query
abdul-kaioum Mar 12, 2025
6634704
fix: min, max query
abdul-kaioum Mar 12, 2025
ac03930
fix: add qoute to col name in condition
abdul-kaioum Mar 12, 2025
2dcdb36
chore: Prevent query execution if pre-query event returns false
abdul-kaioum Mar 13, 2025
26404d7
fix: aggregate functions
abdul-kaioum Mar 15, 2025
229cfae
fix: mismatch binding in closure query
abdul-kaioum Mar 16, 2025
d6f9d54
fix: bulk insert is not returning all inserted model
abdul-kaioum Apr 22, 2025
bd7fc72
fix: bulk insert is not returning all inserted model due not consider…
abdul-kaioum Apr 22, 2025
3101158
feat: set timezone statically
abdul-kaioum Apr 29, 2025
17ec2ab
feat: upsert record on duplicate
abdul-kaioum May 3, 2025
1f93af4
feat: collection
abdul-kaioum May 3, 2025
d747d83
fix: should return empty array when result is empty but returns Colle…
abdul-kaioum May 7, 2025
1d9622a
fix: raw select not returning result
abdul-kaioum Jul 14, 2025
b7c8083
refacor: transactions method added in Connection and deprecated in QB
abdul-kaioum Aug 14, 2025
18a5660
refactor: make relation query methods statically accessible on Model
abdul-kaioum Jun 28, 2026
0e8bb99
docs: add comprehensive usage guide
abdul-kaioum Jun 28, 2026
169539b
Chore: php-cs-fixer to export-ignore
abdul-kaioum Jun 28, 2026
3946aed
test: add failing tests pinning relation/event/aggregate defects
abdul-kaioum Jun 29, 2026
a5d0d6d
fix: relation aggregates, soft delete, events and zero-collapse
abdul-kaioum Jun 29, 2026
9da5921
fix: use 7.4-compatible nullable types
abdul-kaioum Jun 29, 2026
8064f20
refactor: move internal traits into Concerns namespace
abdul-kaioum Jun 29, 2026
3394839
refactor: extract SELECT compilation into Query\Grammar
abdul-kaioum Jun 29, 2026
edfa9bb
refactor: tighten Grammar surface and drop dead getters
abdul-kaioum Jun 29, 2026
c3ea480
test: cover joins, subqueries, when(), constrained eager load and update
abdul-kaioum Jun 29, 2026
3777101
fix: correct LIKE operator check in Grammar
abdul-kaioum Jun 29, 2026
c9e95d8
fix: address Gemini review findings (upsert, casts, pluck, withCast)
abdul-kaioum Jun 29, 2026
d35cd2a
docs: count() int return, boolean cast, internal namespace move
abdul-kaioum Jun 29, 2026
97e5d1d
docs: rewrite README as quick-start + doc index
abdul-kaioum Jun 29, 2026
393c39e
docs(usage): audience note, accurate setup + model properties
abdul-kaioum Jun 29, 2026
77fc7c7
docs(usage): correct CRUD return types, soft-delete + upsert caveats
abdul-kaioum Jun 29, 2026
01e1b7b
docs(usage): query builder — count int, LIKE, join caveat, paginate s…
abdul-kaioum Jun 29, 2026
48de688
docs(usage): verify collection methods + cast types, fix cast timing
abdul-kaioum Jun 29, 2026
dc93c3e
docs(usage): correct belongsTo/hasOne semantics + relation aggregates
abdul-kaioum Jun 29, 2026
bbfb6e0
docs(usage): events (drop creating/created), schema teaser, Limitatio…
abdul-kaioum Jun 29, 2026
5788723
docs: add schema builder reference (docs/schema.md)
abdul-kaioum Jun 29, 2026
5c0b27f
docs(breaking-changes): fix find() return + event list accuracy
abdul-kaioum Jun 29, 2026
1d04dea
docs: correct schema prefix/change()/direct-drop claims to match source
abdul-kaioum Jun 29, 2026
cac1b1d
docs(schema): remove residual auto-prefix claims (FK ref, rename, wit…
abdul-kaioum Jun 29, 2026
ed3c82d
chore: gitignore .superpowers/ scratch dir
abdul-kaioum Jun 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@

/.vscode export-ignore
lefthook.yml export-ignore
.php-cs-fixer.php export-ignore
.gitattributes export-ignore
.gitignore export-ignore
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,7 @@ vendor/
.php-cs-fixer.cache
tests.config.php
.phpunit.result.cache
.phpunit.cache/
phpunit.phar
composer.lock
.superpowers/
49 changes: 37 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,47 @@
### WPKit/Database
# wp-database

---
A small ActiveRecord ORM with a fluent query and schema builder on top of
WordPress' `$wpdb`.

# usage
## Install

1. Add this repository in composer.json
```jsonc
// composer.json
"repositories": [
{ "type": "vcs", "url": "https://github.com/Bit-Apps-Pro/wp-database" }
]
```

```bash
composer require bitapps/wp-database:dev-main
```
"repositories": [

## Quick start

```php
use BitApps\WPDatabase\Model;

class Contact extends Model
{
protected $fillable = ['name', 'email'];

public function deals()
{
"type": "vcs",
"url": "https://github.com/Bit-Apps-Pro/wp-database"
return $this->hasMany(Deal::class, 'contact_id', 'id');
}
]
```
}

2. Then install the package
Contact::insert(['name' => 'Ada', 'email' => 'ada@x.com']);

$active = Contact::where('is_active', 1)
->withCount('deals')
->orderBy('name')->asc()
->get(); // Collection of Contact models
```
composer require bitapps/wp-database:dev-main
```

## Documentation

- **[Usage guide](docs/usage.md)** — models, query builder, relationships,
casts, events, transactions, and more.
- **[Schema builder](docs/schema.md)** — table creation, columns, indexes, and migrations.
- **[Breaking changes](docs/breaking-changes.md)** — upgrade notes.
Loading