softwarepunt / php-activerecord
php-activerecord is an open source ORM library based on the ActiveRecord pattern.
Requires
- php: >=7.2.0
Requires (Dev)
- pear/log: ~1.12
- pear/pear_exception: 1.0-beta1
- phpunit/phpunit: ^9.5
Suggests
- maximebf/debugbar: This package can intergrate into the PHP Debugbar
Replaces
This package is auto-updated.
Last update: 2024-12-11 11:24:37 UTC
README
This is a fork of php-activerecord, originally authored by @kla, @jpfuentes2 and its contributors.
Important
⚠ php-activerecord
is no longer actively being maintained, the original site is dead, and the project is mostly abandoned.
I would not recommend this ORM for any new projects or developments.
This fork contains some quality-of-life enhancements, support for the latest PHP version, and fixes, which are relevant to us and some of our older projects that we maintain.
Installation
We recommend using composer:
composer require softwarepunt/php-activerecord:dev-master
Because we do not actively maintain tags or versions for this project, you should refer to dev-master
.
Documentation & usage
- 👨💻 The original project: https://github.com/jpfuentes2/php-activerecord
- 📕 Mirror of the old docs site: https://www.phpactiverecord.xyz/
(⚠ phpactiverecord.org is dead and being squatted by someone, best to ignore it.)
Fork changes
This fork is currently only compatible with PHP 8.1!
Fixes
- Compatibility fixes over time for PHP 7.2, 8.0, 8.1
activerecord_autoload
no longer causes conflicts when the library is loaded more than once.- Fix
count(): Parameter must be an array or an object that implements Countable
error infind_by_pk()
. - Fix
castIntegerSafely()
throwing an error if the input is empty (e.g. empty string), now just returns zero.
Enhancements
-
DateTime: Implement \JsonSerializable, format in "c" mode.
-
Added
set_is_new_record(bool)
toModel
to help modifying internal state. -
Added experimental
reconnect()
function toConnection
. -
Added
stupidfastquery($options)
: this converts options to a query and returns the raw PDO result set without any activerecord magic. -
Added
stupidfastqueryValues($options, $colIndex = 0)
: runs astupidfastquery
and returns an array of column values. -
Added
stupidfastcount($options)
: run query, only return row count. -
Added
find_all_with_wrapped_sort($options)
: this wraps the results in a separate SELECT for faster sorting on JOIN heavy queries. -
Pass
query_info
tofind($options)
options to get generated query data as result (used internally bystupidfastcount
& co) - can be used if you want to convert$options
to an actual statement:[ 'query' => $sql->to_s(), 'values' => $sql->get_where_values(), 'readonly' => $readonly, 'eager_load' => $eager_load ];