Getting Started
Why use Arca Orm ?
- Automatically creates tables and columns as you go
- No configuration, just fire and forget
- Save loads of time while working on database
- Built upon stable foundation of Doctrine Dbal and extensively tested
- Thanks to loophp Arca comes with Lazy collection and tons of helper collection functions
- Supports lots database platforms , you can see the complete list here
- Supports concurrent queries and connection pooling with swoole and async with amphp. Check out integration docs here
Requirements
- PHP 8.1 or greater
- PHP PDO or other supported database adapter
- Mysql, MariaDB, Sqlite or any other supported database. check the list here
Installation
You can install Arca ORM via Composer. If you don't have composer installed , you can download composer from here
composer require scrawler/arca
QuickStart
Setup
<?php
include './vendor/autoload.php'
$connectionParams = array(
'dbname' => 'YOUR_DB_NAME',
'user' => 'YOUR_DB_USER',
'password' => 'YOUR_DB_PASSWORD',
'host' => 'YOUR_DB_HOST',
'driver' => 'pdo_mysql', //You can use other supported driver this is the most basic mysql driver
);
// For Arca ORM 1.x
// $db = new \Scrawler\Arca\Database($connectionParams);
// For Arca 2.x and later
$db = \Scrawler\Arca\Facade\Database::connect($connectionParams);
For complete list of driver check here
ID and UUID
using uuid instead of id is a good idea but it may come with some performance issues, uuid even takes up more space than auto increment id. For your usecase if you want to use uuid as primary key instead on auto increment id just do the following
php
$db->useUUID();
once you have switched to UUID don't switch back to using id as it will cause lot of unwanted issues.
CRUD
// Create new record
// The below code will automatically create user table and store the record
$user = $db->create('user');
$user->name = "Pranja Pandey";
$user->age = 24
$user->gender = "male"
$user->save()
// Get record with id 1
$user = $db->get('user',1);
//Get all records
$users = $db->get('user');
// Update a record
$user = $db->get('user',1);
$user->name = "Mr Pranjal";
$user->save();
// Delete a record
$user = $db->get('user',1);
$user->delete();
Finding data with query
// Using where clause
$users = $db->find('user')
->where('name = "Pranjal Pandey"')
->get();
foreach ($users as $user){
// Some logic here
}
// Get only single record
$users = $db->find('user')
->where('name = "Pranjal Pandey"')
->first();
// Using limit in query
$users = $db->find('user')
->setFirstResult(10)
->setMaxResults(20);
->get()