m.rahimi / astro-orm
Simple Object Relational Mapper for manipulate data with fluent interface.
Fund package maintenance!
daramet.com/mrahimi
Requires
- php: ^7.2.5||^8.0
- ext-pdo: *
- guzzlehttp/guzzle: ^7.0
Requires (Dev)
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-12-13 22:58:52 UTC
README
object-relational mapper (ORM), lets you query and manipulate data with fluent api from a database using an object-oriented paradigm.
📌 Requirements
- PHP >= 7.2
- PDO Extension
⬇️ Installation
You can install the package via the composer:
composer require m.rahimi/astro-orm
👀 How its works
1. Setup your database configs
Fill the config/database.php
file with your database configuration.
NOTE: You Can use any database extensions, like: PDO, Mysqli, Sqlite,etc. Just define its array key.
2. Implements Connection Contract
In this project i use PDO driver. so i create Database/PDODatabaseConnection.php
file and implements contracts methods.
connect(); // Which implements database connection getConnection(); // Which return database connection
3. Use Query Builder
Now get database configs, create new instanse of PDODatabaseConnection
and connect to DB.
$this->config = $this->getConfigs('database', 'astro_orm'); $pdoConnection = new PDODatabaseConnection($this->config); $pdoHandler = $pdoConnection->connect();
Insert
Insert Data: return last insert id
$data = [ 'name' => 'John', 'email' => 'john.doe@gmail.com', 'link' => 'https://example.com', 'skill' => 'PHP' ]; $last_id = PDOQueryBuilder::table('users')->create($data);
update
Update Data: return true if successful
$result = PDOQueryBuilder::table('users') ->where('name', 'John') ->where('skill', 'PHP') ->update([ 'skill' => 'Javascript', 'name' => 'Jeff', 'email' => 'jeff@gmail.com' ]);
Multiple where
$result = PDOQueryBuilder::table('users') ->where('name', 'John') ->where('skill', 'JS') ->update(['skill' => 'Javascript']);
Multiple orWhere
$result = PDOQueryBuilder::table('users') ->orWhere('skill', 'PHP') ->orWhere('skill', 'JS') ->get();
Delete
Delete Data: return true if successful
$result = PDOQueryBuilder::table('users') ->where('name', 'John') ->delete();
Fetch
$result = PDOQueryBuilder::table('users') ->where('name', 'John') ->where('skill', 'Javascript') ->get();
Fetch first row
$result = PDOQueryBuilder::table('users') ->where('name', 'First Row') ->first();
Fetch first row or throw exception on failure
$result = PDOQueryBuilder::table('users') ->where('name', 'Jim') ->firstOrFail();
Find ID
$result = PDOQueryBuilder::table('users') ->find($id);
Find ID or throw exception on failure
$result = PDOQueryBuilder::table('users') ->findOrFail($id);
Find with value
$result = PDOQueryBuilder::table('users') ->findBy('name', 'Jack');
Get specific rows
$result = PDOQueryBuilder::table('users') ->where('name', 'Jack') ->limit(5) ->get();
Sort rows
$result = PDOQueryBuilder::table('users') ->orderBy('skill', 'DESC') ->get();
Testing
Run the tests with:
composer test
Contributing
Contributions are welcome! To contribute, please familiarize yourself with CONTRIBUTE.md
Security
If you discover any security related issues, please email mohammadreza.rahimi1373@gmail.com instead of using the issue tracker.
License
The MIT License (MIT). Please see License File for more information.