taq / torm

Just another simple PHP ORM. You can use it, but don't ask me why I made it. :-)
GNU General Public License v2.0
95 stars 30 forks source link
activerecord orm php

TORM

:warning: WARNING This software is abandonware. As the creator and maintainer, I don't even use PHP for years, so, I can't support it anymore. It should work ok for PHP untill version 7, but seems that with 8.1 there are some alerts. Feel free to fork it and keep it going.

Just another simple ORM for PHP. You can use it, but don't ask why I made it. Right? :-)

Usage

Take a look on the Github Wiki for documentation, but let me show the basics here:

<?php
// open the PDO connection and set it
$con = new PDO("sqlite:database.sqlite3");
TORM\Connection::setConnection($con);
TORM\Connection::setDriver("sqlite");

// define your models - an User class will connect to an users table
class User extends TORM\Model {};
class Ticket extends TORM\Model {};

// create some validations
User::validates("name",  ["presence"     => true]);
User::validates("email", ["presence"     => true]);
User::validates("email", ["uniqueness"   => true]);
User::validates("id",    ["numericality" => true]);

// create some relations
User::hasMany("tickets");
User::hasOne("account");
Ticket::belongsTo("user");

// this will create a new user
$user = new User();
$user->name  = "John Doe";
$user->email = "john@doe.com";
$user->level = 1;
$user->save();

// this will find the user using its primary key
$user = User::find(1);

// find some users
$users = User::where(["level" => 1]);

// find some users, using more complex expressions
// the array first element is the query, the rest are values
$users = User::where(["level >= ?", 1]); 

// updating users
User::where(["level" => 1])->updateAttributes(["level" => 3]);

// using fluent queries
$users = User::where(["level" => 1])->limit(5)->order("name desc");

// listing the user tickets
foreach($user->tickets as $ticket) {
   echo $ticket->description;
}

// show user account info
echo $user->account->number; 
?>

Testing

SQLite

First, use composer update to make sure everything is ok with all the packages. Then, go to the test directory and run run. It will requires the SQLite driver so make sure it is available. If not, check the php.ini dir found with

$ php -r 'phpinfo();' | grep 'php.ini'
Configuration File (php.ini) Path => /etc/php/7.1/cli
Loaded Configuration File => /etc/php/7.1/cli/php.ini

and, if not found there or on the conf.d on the same location the php.ini file is, it can be installed, on Ubuntu, using:

$ sudo apt install php-sqlite3

Multibyte strings, locale and YAML

$ sudo apt install php-mbstring php-intl php-yaml