PHP code example of infocyph / dblayer
1. Go to this page and download the library: Download infocyph/dblayer library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
infocyph / dblayer example snippets
use Infocyph\DBLayer\DB;
// Single connection
DB::addConnection([
'driver' => 'mysql',
'host' => 'localhost',
'port' => 3306,
'database' => 'myapp',
'username' => 'root',
'password' => 'secret',
'charset' => 'utf8mb4',
]);
// Read replicas
DB::addConnection([
'driver' => 'mysql',
'read_strategy' => 'round_robin', // random | round_robin | least_latency
'read' => [
['host' => 'replica1.example.com'],
['host' => 'replica2.example.com'],
],
'database' => 'myapp',
'username' => 'root',
'password' => 'secret',
]);
// Per-query timeout budget (milliseconds)
DB::withQueryTimeout(500, function () {
DB::select('select * from users');
});
// Absolute deadline relative to now (seconds)
DB::withQueryDeadline(0.25, function () {
DB::select('select * from users');
});
// Cooperative cancellation check
DB::withQueryCancellation(
fn () => false,
fn () => DB::select('select 1')
);
DB::enableTelemetry();
DB::select('select 1');
DB::beginTransaction();
DB::rollBack();
$snapshot = DB::telemetry(); // read buffer
$exported = DB::flushTelemetry(); // read + clear
// SELECT
$users = DB::table('users')
->select('id', 'name', 'email')
->where('active', true)
->where('age', '>=', 18)
->orderBy('created_at', 'desc')
->limit(10)
->get();
// INSERT
$id = DB::table('users')->insertGetId([
'name' => 'John Doe',
'email' => '[email protected] ',
]);
// UPDATE
DB::table('users')
->where('id', $id)
->update(['name' => 'Jane Doe']);
// DELETE
DB::table('users')->where('id', $id)->delete();
// Complex queries
$orders = DB::table('orders as o')
->join('users as u', 'o.user_id', '=', 'u.id')
->leftJoin('products as p', 'o.product_id', '=', 'p.id')
->where('o.status', 'completed')
->where(function($q) {
$q->where('o.total', '>', 1000)
->orWhere('u.vip', true);
})
->select('o.*', 'u.name as user_name', 'p.name as product_name')
->get();
// Aggregates
$count = DB::table('users')->count();
$total = DB::table('orders')->sum('amount');
$average = DB::table('products')->avg('price');
use Infocyph\DBLayer\DB;
$users = DB::repository('users');
$all = $users->all();
$one = $users->find(1);
$active = $users->get(fn ($q) => $q->where('active', 1));
use Infocyph\DBLayer\Repository\TableRepository;
use Infocyph\DBLayer\Query\QueryBuilder;
use Infocyph\DBLayer\Query\Repository;
final class User extends TableRepository
{
protected static string $table = 'users';
protected static ?string $connection = 'main';
protected static function configureRepository(Repository $repository): Repository
{
return $repository->enableSoftDeletes()->setDefaultOrder('id', 'desc');
}
protected static function configureQuery(QueryBuilder $query): QueryBuilder
{
return $query->where('active', '=', 1);
}
}
$one = User::find(1); // Repository method
$rows = User::where('active', '=', 1)->get(); // QueryBuilder method
$stats = User::stats(); // DB facade method
$reportRows = User::query('reporting')->get(); // Per-call connection override
// Automatic transaction
DB::transaction(function() {
DB::table('accounts')->where('id', 1)->update(['balance' => 900]);
DB::table('accounts')->where('id', 2)->update(['balance' => 1100]);
DB::table('transactions')->insert(['amount' => 100]);
});
// Manual transaction
DB::beginTransaction();
try {
// ... operations
DB::commit();
} catch (\Exception $e) {
DB::rollBack();
throw $e;
}