https://github.com/softwarepunt/instarecord
β¨ A hyper productive ORM library for PHP + MySQL.
https://github.com/softwarepunt/instarecord
database mysql orm php query-builder
Last synced: 5 months ago
JSON representation
β¨ A hyper productive ORM library for PHP + MySQL.
- Host: GitHub
- URL: https://github.com/softwarepunt/instarecord
- Owner: SoftwarePunt
- License: mit
- Created: 2020-09-02T02:13:18.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2025-01-09T16:07:58.000Z (over 1 year ago)
- Last Synced: 2025-09-21T20:16:10.650Z (10 months ago)
- Topics: database, mysql, orm, php, query-builder
- Language: PHP
- Homepage:
- Size: 336 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Instarecord
**β¨ A hyper productive ORM for PHP.**
[](https://packagist.org/packages/softwarepunt/instarecord)
[](https://github.com/SoftwarePunt/instarecord/actions/workflows/phpunit.yml)
Instarecord makes it super easy and fun to work with MySQL databases in PHP. It's fast and intuitive, and loaded with optional features to make your life easier.
## The pitch
π§ββοΈ Define your models with typed variables, and Instarecord figures out the rest!
```php
email = "bob@web.net";
$user->save();
echo "Created user #{$user->id}!";
```
## Features
### πΊοΈ [Object Mapping](./docs/ObjectMapping.md)
Define your models as pure PHP classes with typed properties. Use them like regular objects.
### π¦ [Easy CRUD](./docs/CRUD.md)
Use intuitive object-oriented CRUD (create, read, update, and delete) operations on your models.
### π [Query Builder](./docs/Queries.md)
Use the query builder to quickly build and run more complex queries with prepared statements.
### π€ [Relationships](./docs/Relationships.md)
Set up relationships between your models and easily load them in an optimized way.
### β
[Validation](./docs/Validation.md)
Add constraints to your model properties and validate them with user-friendly error messages.
### π [Caching](./docs/Caching.md)
Use model caching features to prevent unnecessary or duplicate queries.
## Quickstart
### Installation
Add Instarecord to your project with [Composer](https://getcomposer.org/):
```bash
composer require softwarepunt/instarecord
```
### Configuration
Pass your own `DatabaseConfig` or modify the default one:
```php
charset = "utf8mb4";
$config->unix_socket = "/var/run/mysqld/mysqld.sock";
$config->username = "my_user";
$config->password = "my_password";
$config->database = "my_database";
$config->timezone = "UTC";
```
### Use models
Defines your models by creating normal classes with public properties, and extending `Model`:
```php
make = "Toyota";
$car->model = "Corolla";
$car->year = 2005;
$car->save(); // INSERT INTO cars [..]
// Post insert, the primary key (id) is automatically populated
$car->year = 2006;
$car->save(); // UPDATE cars SET year = 2006 WHERE id = 123
$car->delete(); // DELETE FROM cars WHERE id = 123
```
### Run queries
You can easily build and run custom queries, and get results in various ways - from raw data to fully populated models.
#### From models
```php
$matchingCars = Car::query()
->where('make = ?', 'Toyota')
->andWhere('year > ?', 2000)
->orderBy('year DESC')
->limit(10)
->queryAllModels(); // Car[]
```
#### Standalone
```php
$carsPerYear = Instarecord::query()
->select('year, COUNT(*) as count')
->from('cars')
->groupBy('year')
->queryKeyValueArray(); // [2005 => 10, 2006 => 5, ..]
```