Releases: parable-php/orm
Parable ORM 0.8.0
0.8.0
Changes
- Massive simplification. Removed
MysqlConnection
andSqliteConnection
, simply returningPDO
instances instead. - It's now possible to call
Database::setConnectionClass(string $connectionClass)
and set a custom connection class. This class must extendPDO
. Database::setType()
now accepts anyint
value, and will only throw an exception upon trying to connect.- Due to custom connection classes, code coverage of tests has risen to 100%. Just a nice little bonus.
Bugfixes
- One instance where the primary key is set was not being typed. This caused issues when, for example, a
getId(): int
would attempt to return astring
value as set directly from the database.
Parable ORM 0.7.0
0.7.0
Changes
- Time for more type casting! By implementing
HasTypedProperties
and the functiongetPropertyType(string $property): ?int
, you can optionally allow value type casting from and to the database. Supported types are defined onPropertyTypeDeterminer
asTYPE_INT
,TYPE_DATE
,TYPE_TIME
andTYPE_DATETIME
. The last three will return aDateTimeImmutable
instance. The formats ofDATE_SQL
,DATE_TIME
,DATETIME_SQL
are forced for these.- These are cast TO these types after retrieving from the database. This allows, for example, type hinting the setter for created at:
setCreatedAt(DateTimeImmutable $createdAt)
and the getter:getCreatedAt(): DateTimeImmutable
. - These are transformed back to string values before saving, because
toArray()
does so.
- These are cast TO these types after retrieving from the database. This allows, for example, type hinting the setter for created at:
PropertyTypeDeterminer
offers two static methods (typeProperty
anduntypeProperty
) which will attempt to type, if required, the passed property and value on the entity.- New instances of entities are now built using the DI Container. This allows DI to be used in entities if you so wish.
Parable ORM 0.6.1
0.6.1
Changes
AbstractEntity::toArrayWithout(string ...$keys)
will allow you to get an array representation of an entity without the specified keys.AbstractEntity::hasBeenMarkedAsOriginal()
has been added, and can be used to determine whether it was loaded from the database or just saved.AbstractRepository::isStored()
is now available, and will tell you if the ORM thinks the entity has been stored.
Parable ORM 0.6.0
0.6.0
And we're back to no casting whatsoever. 0.5.0 was intended to be a first step to more complete type casting for values, but it became clear the functionality wasn't going where it needed to go.
So, placing the responsibility back at the implementation where I now believe it lies. The other improvements from 0.5.0 have been kept, however.
Parable ORM 0.5.0
0.5.0
Major change
This update contains a handy change. The TypeCaster
has been added. This will attempt to cast SQL-standard dates, times and datetimes to DateTimeImmutable
objects, leaving everything else as string
.
See TypeCasterTest
for the test cases. In case there are scenarios in which the parsing does not go correctly, please open an issue or PR to add the scenario to the test cases.
It's possible to disable the TypeCaster
by calling TypeCaster::disable()
before doing any database retrievals. Enabling it again can be done by calling TypeCaster::enable()
.
Changes
Database::DATE_SQL
andDatabase::TIME_SQL
have been added.setCreatedAt()
andsetUpdatedAt()
have been removed from the feature interfaces. This leaves only the mark methods left, and leaves the implementation up to you.
Parable ORM 0.4.1
0.4.1
Changes
-
AbstractRepository
did not fail gracefully when instanced without a validDatabase
instance available in the DI Container. An active Database connection is not, however, required to instantiate a repository. It is, however, to use it. Now instantiating is possible, but attempting to use the repository will fail.See
testCreateRepositorySuccessfulWithoutDatabaseButFailsOnPerformingAnything
for specifics. Also, I'm super good at naming tests.
Parable ORM 0.4.0
0.4.0
Changes
-
Database
has gained multiple getters to make it easier to work with. -
AbstractRepository
now useshasValueSets()
rather thancountValueSets() > 0
. -
Obsolete soft quoting setting removed, as it was never implemented here. Quoting is done in the
parable-php/query
package. -
Implemented
__debugInfo()
onDatabase
to prevent the password being leaked while being dumped.NOTE: This cannot prevent
var_export
usage. It is strongly suggested not to usevar_export
for logging purposes where an instance ofDatabase
may be logged.
Parable ORM 0.3.0
0.3.0
Changes
-
Updated to
parable-php/query
0.2.1, which offersOrderBy::asc(...$keys)
andOrderBy::desc(...$keys)
, rather than using strings.Example usage:
$repository->findAll(OrderBy::asc('id');
.
Parable ORM 0.2.1
0.2.1
Changes
- Entities will no longer attempt to set values on new instances that are already
null
. This makes it possible to more strictly type setters. - Repositories gained a method:
findUniqueBy($callable): AbstractEntity
. It returns null on 0, the entity on 1 and throws on 1+.
Parable ORM 0.2.0
0.2.0
Same as 0.1.2 but now without breaking changes in a major pre-release version:
0.1.2
Changes
- Renamed
Traits
directory toFeatures
since they haven't been traits for a while. - Removed
getCreatedAt()
andgetUpdatedAt()
from theSupportsSomethingedAt
features, since Parable ORM doesn't require them and you should choose how to expose them.