Skip to content

bixev/light-orm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This ORM aims to manipulate objects from database the simpliest way

Installation

It's recommended that you use Composer to install InterventionSDK.

composer require bixev/orm "~1.0"

This will install this library and all required dependencies.

so each of your php scripts need to require composer autoload file

<?php

require 'vendor/autoload.php';

Usage

Multiple databases

Initialise database with your own. $databaseName is null by default. You can override it in the model classes

\Bixev\ORM\API::setDatabaseGetter(function($databaseName){
    $db = new \PDO('');
    return $db;
});

$databaseName is used within the models to communicate with correct database

Repository

Get repository to manipulate objects

$exampleRepository = \Bixev\ORM\API::get('Example');

Create one object and store it into database

$example = $exampleRepository->createNew();
// same as
// $example = new \Bixev\ORM\Example();
$example->example_2_id = 5;
$example->name = "Tom";
$example->save();
echo $example->getId();

Retrieve existing record by id

$id = 3;
$example = $exampleRepository->find($id);
// same as
// $example = new \Bixev\ORM\Example($id);
echo $example->name;

Retrieve existing record by sql row

$db = new \PDO('');
$row = $db->query("SELECT id, name, example_2_id FROM user")->fetch();
// row has to contain all declared fields
$user = new \Bixev\ORM\Example($row);

Search

$examples = $exampleRepository->findBy(['name' => "Tom"]);
$examples = $exampleRepository->findAll();
foreach ($examples as $example) {
    echo $example->name;
}

Advanced instanciation of collection (by sql rows)

$db = new \PDO('');
$rows = $db->query("SELECT id, name, example_2_id FROM user")->fetchAll();
// rows have to contain all declared fields
$examples = $exampleRepository->newCollection($rows);

Search ONE

$example = $exampleRepository->findOneBy(['name' => "Tom"]);

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages