Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Think Orm Laravel Package

topthink/think-orm

ThinkORM is the PHP ORM behind ThinkPHP, offering ActiveRecord-style models, a fluent query builder, relationships, events, soft deletes, and multi-database support. Use it with ThinkPHP or standalone for expressive, efficient database access.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs buy on the data-access layer. ThinkORM supplies models, relations, soft deletes, transactions, pagination, query caching, and multi-driver support (MySQL, PostgreSQL, SQLite, SQL Server, Oracle, MongoDB) as a maintained dependency. Anyone scoping an in-house ActiveRecord/query builder should cost that against adopting this.
  • Roadmap sequencing for non-Laravel PHP services. For ThinkPHP-based products, this is the native persistence path — no custom abstraction to fund, no parallel ORM to maintain.
  • Legacy modernization. ThinkPHP 3.x/5.x → 6/8 upgrades, and extraction of ORM usage out of framework-coupled monoliths into standalone scripts, queue workers, and CLI tooling (it runs without the framework).
  • Feature prioritization. Relations, soft deletes, transaction handling, and pagination are commodity capabilities. A PM should refuse to staff a squad to rebuild them; the decision is which package, not whether to build.
  • Ecosystem and vendor-risk register. Small English-language footprint, single-maintainer profile, and a release history worth tracking feed architecture review and exit-plan ownership — both PM-visible risks, not just engineering ones.
  • Polyglot standardization. Whether PHP services converge on Eloquent (Laravel-only, heavier dependency pull), Doctrine (data-mapper, framework-agnostic, heavier), or ThinkORM (lightweight, framework-agnostic Active Record). This is a portfolio decision; divergence costs onboarding time.
  • Procurement/compliance sign-off. Apache-2.0 permits commercial and closed-source distribution with no copyleft obligation — legal can clear it without a negotiation cycle.

When to Consider This Package

Adopt when:

  • The team already ships ThinkPHP, or inherited a codebase that does. This is the native, lowest-friction path and avoids introducing a second ORM.
  • You want an ORM without a framework's worth of dependencies. ThinkORM is usable standalone; Eloquent drags in Illuminate components.
  • Multi-driver support is a real requirement — particularly MongoDB or SQL Server — where the alternative is hand-rolled driver-specific code.
  • The workload is CRUD-heavy: admin backends, internal tools, content services. Time-to-first-query beats persistence-layer purity.
  • Apache-2.0 fits your distribution model.

Look elsewhere when:

  • The product is Laravel-based. Use Eloquent. Note this package is frequently mis-filed as a "Laravel/PHP" option — it is ThinkPHP's ORM. Running it inside Laravel means two container/DB abstractions, duplicated configuration, and a debugging story the team will pay for repeatedly. Validate framework fit before funding even a spike.
  • You need domain-driven persistence, unit-of-work, or data-mapper isolation: Doctrine is the mature answer.
  • Static analysis, typed APIs, and IDE tooling are non-negotiable — Eloquent and Doctrine have materially broader PHPStan/Psalm and editor support.
  • Hiring depth in English-speaking markets matters. Stars, English documentation, and community answer coverage are thin relative to Eloquent/Doctrine.
  • You operate in a regulated environment requiring documented security-response SLAs, CVE turnaround commitments, or commercial support contracts.

Due diligence before committing:

  • Interrogate the adoption numbers. The "0 dependents" figure is misleading: ThinkORM ships inside topthink/framework, so installs accrue to the framework, not the split package. Pull Packagist download stats and check GitHub issue throughput and closure rate before treating low stars as low adoption.
  • Verify parameter binding and identifier quoting, especially on raw-query and whereRaw paths. This is the security surface that matters.
  • Assess bus factor. A recent release is a positive signal; single-maintainer concentration is the residual risk. Name an owner and a fork-and-patch plan.
  • Reconcile driver and PHP version floors against your runtime and managed-database versions before signing off on migration estimates.

How to Pitch It (Stakeholders)

Executives. "This is a free, Apache-2.0 database layer for PHP — no license cost, no copyleft exposure, safe for closed-source distribution. Adopting it avoids roughly [X engineer-weeks] of building and indefinitely maintaining database connectors ourselves. The trade-off is ecosystem scale: it's the ORM behind ThinkPHP, a widely used framework in China with a thinner English-speaking community, so hiring and third-party support are weaker than for Laravel's Eloquent. Recommendation: default it for ThinkPHP services and standalone PHP utilities; do not introduce it alongside Laravel, where it duplicates existing infrastructure."

Engineering. "ThinkORM is a standalone Active Record plus query builder extracted from ThinkPHP, covering MySQL, PostgreSQL, SQLite, SQL Server, Oracle, and MongoDB behind one API. We get models, relations, soft deletes, transactions, and pagination without framework lock-in — a smaller dependency footprint than Eloquent and considerably lighter than Doctrine. Costs are real: smaller community, predominantly Chinese documentation, lower static-analysis maturity, and single-maintainer risk. Treat it as the default for ThinkPHP services and non-Laravel PHP tooling, and require an ADR to adopt it anywhere else. Three spike tasks before we commit: confirm parameter binding on raw queries, map driver support against our managed database versions, and document an exit plan — it's plain PHP, so migration cost stays contained."

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource